アーカイブ

2011年08月

会社の研修でSQLとかを使うのでその復習。
とりあえず、外部参照あたりを復習しました。

テーブルの文字コード設定
http://mysql.javarou.com/dat/000571.html

外部参照
http://www.techscore.com/tech/sql/SQL3/03_04.html/

外部キー(ON DELETE CASCADE)
http://www.atmarkit.co.jp/flinux/rensai/mysql5_08/mysql5_08c.html


外部参照とかの後でON DELETE CASCADEとか書くと、
親テーブルでの参照先のレコードが消された場合に、子供の方も消えるというもの。

下は試しに書いてみたサンプルコードです。


--ロボットテーブルの作成
CREATE TABLE robot
(
  id INTEGER PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(255) UNIQUE
) CHARACTER SET sjis;


--ロボットテーブルにデータを追加
INSERT INTO robot(name) VALUES('ガンダム');
INSERT INTO robot(name) VALUES('ザク');
INSERT INTO robot(name) VALUES('マジンガーゼット');
INSERT INTO robot(name) VALUES('ライオコンボイ');


--パイロットテーブルの作成
CREATE TABLE pilot
(
  id INTEGER PRIMARY KEY  AUTO_INCREMENT,
  name VARCHAR(255) UNIQUE
)CHARACTER SET sjis;

--パイロットテーブルにデータを追加
INSERT INTO pilot(name) VALUES('アムロ=レイ');
INSERT INTO pilot(name) VALUES('シャア=アズナブル');
INSERT INTO pilot(name) VALUES('パプティマス=シロッコ');
INSERT INTO pilot(name) VALUES('碇シンジ');
INSERT INTO pilot(name) VALUES('兜甲児');


--ロボットとパイロットの乗り込み可能表を作成
CREATE TABLE norikomi
(
  id SERIAL PRIMARY KEY,
  robo_id INTEGER,
  pilot_id INTEGER,
  FOREIGN KEY (robo_id)
      REFERENCES robot(id)  ON DELETE CASCADE ON UPDATE CASCADE,
  FOREIGN KEY (pilot_id)
      REFERENCES pilot(id)  ON DELETE CASCADE ON UPDATE CASCADE
) CHARACTER SET sjis;

--乗り込み表示にデータを追加
INSERT INTO norikomi (robo_id  , pilot_id) VALUES( 1 , 1 );
INSERT INTO norikomi (robo_id  , pilot_id) VALUES( 1 , 2 );
INSERT INTO norikomi (robo_id  , pilot_id) VALUES( 1 , 3 );
INSERT INTO norikomi (robo_id  , pilot_id) VALUES( 2 , 1 );
INSERT INTO norikomi (robo_id  , pilot_id) VALUES( 2 , 2 );
INSERT INTO norikomi (robo_id  , pilot_id) VALUES( 2 , 3 );
INSERT INTO norikomi (robo_id  , pilot_id) VALUES( 3 , 4 );

--乗り込み表の表示
select * from norikomi;

--アムロの削除
DELETE FROM pilot WHERE id = 1;

--乗り込み表の表示
select * from norikomi;

カテゴリ:
JSPのアクションで<jsp:useBean>ってのがあります。
一言で言えば指定したクラスをインスタンス化するためのものですが、こいつのパラメータにscopeってのがあります。
これはインスタンス化されたオブジェクトの寿命らしいのですが、それ以外の用途にも使われているらしいです。


基礎から学ぶサーブレット/JSP(13)
http://www.atmarkit.co.jp/fjava/rensai2/jspservlet13/jspsevlet13_2.html


上の記事によると、<jsp:useBean>を使っても必ずしもオブジェクトの生成はされないとのこと。
IDとスコープが同一のオブジェクトが存在した場合、そっちの方を使うらしいです。


ここまでは何とか分かったけど、scopeのsessionってのがよく分からん。
というか、サーブレットとかのセッションが分かったないので、調べてみました。


Javaの道 Servlet-6.セッション管理
http://www.javaroad.jp/servletjsp/sj_servlet6.htm


そうか、サーブレットに初めてアクセスした場合に、自動的にセッションIDの割り振りが行われているんだ。
さらに、クライアントに割り振られたセッションIDはブラウザさんが自動的にサーバの方に送ってたのか。
これが分かれば、<jsp:useBean>のscope=sessionの意味も見えてきたぞ。
スコープにセッションを指定してやれば、タイムアウトやブラウザを閉じるまでは有効な(値が保持されている)オブジェクトが生成できるという訳か。

Javaって便利だけど、裏で色々やっていることが多いな。細かいことをやろうとすると、裏ルールみたいなのを知らないと詰まるな。

カテゴリ:

動いてくれ、ゴッドガンダムーTomcat!!

気づいたらTomcatが動かなくなってしまった罠。
tomcat7w.exeをダブルクリックしたら、「アクセスが拒否されました。」とかいうメッセージがでる。
何か解決方法はないかなと思ったら、こんなサイトを見つけました。

http://www.ab.auone-net.jp/~hoshi/setup/ApacheTomcat/ApacheTomcat002.html

要はtomcat7w.exeに「管理者として実行する」にチェックを入れればいいらしい。
私が使ってるOSはWindows7だけど、どうしてこんなことが起こったんだろう。

カテゴリ:

このページを参考に、何とかサーブレットでHello Worldを出すことができました。

http://www.javadrive.jp/servlet/context/

このページによると、サーブレット作成のステップは(1)アプリケーションの構成、(2)コンテキストの設定、(3)web.xmlの記述、(4)実行結果の確認の4つです。
以下に、各過程について簡単に説明します。

(1)アプリケーションの構成
参考サイトに載っているようなフォルダ構成を作成します。
このフォルダ構成に関してはTomcatの決まりごとみたいなものなので、何も考えずに言われた通りに作ります。
http://www.javadrive.jp/servlet/context/index1.html


(2)コンテキストの設定
参考サイトではコンテキストファイルを作成するように書いていますが、こんな面倒なことをしなくても大丈夫な方法があります。

http://www.javadrive.jp/servlet/context/index2.html

Tomcatをインストールしたルートディレクトリにwebappsというフォルダがあると思いますが、この中に(1)で作成したフォルダを入れるだけでOKです。
ここまで出来たらTomcatを再起動して、ブラウザに以下のURLを打ち込みます。

http://localhost:8080/(自分で作ったフォルダ名)/index.html

webappsについての参考文献はココ↓。
http://www.searchman.info/java_eclipse/1030.html


(3)web.xmlの記述
最後にサーブレットクラスとURLの対応付けをしてやる必要があります。
このやり方は、参考サイト通りにやれば問題なくできました。

http://www.javadrive.jp/servlet/context/index3.html

参考サイトのweb.xmlの設定では、URLに~/helloworldと入力した場合、helloworldというJavaクラスに処理を投げるようになっています。

(4)実行結果の確認
ブラウザから以下のようにURLを入力すれば、サーブレットの動作確認ができると思います。

http://localhost:8080/hello/helloworld



最後にメモ書き程度に少々の補足を
・(4)のURLでlocalhostの後ろの数字はポート番号である。Tomcatはデフォルトで8080ポートを使用しているが、実行環境によって設定が違うことがあるので、それはその都度読み替える必要がある。
・(4)のURLの/hello/の部分は、webappsに置いたフォルダ名である。なおTomcatはwebサーバの機能も備えているので、webapps直下フォルダに置いたhtmlファイルは外部に公開することができる。
・例えばwebappsフォルダ直下にsampleフォルダを作成し、その中にindex.htmlというファイルを置いた場合は、http://localhost:8080/sample/index.htmlというURLでアクセスすることができる。       

カテゴリ:

サーブレットに苦戦してます。
分かったこととかのメモを残しときます。

①Tomcatのインストールについて
XAMPPにもTomcatは入ってるらしいけど、正直使い方が分からない。
最新版を入れて使うことにしました。

http://tomcat.apache.org/download-70.cgi

ちなみに32-bit/64-bit Windows Service Installerを選べばインストーラ形式になっています。
こっちの方が楽です。



②サーブレットの作り方について
このサイトで結構くわしく解説されてます。

http://www.javadrive.jp/servlet/context/

ただ、Javaのコンパイルがうまくいかない。
JavaはEclipseを使って書いてますが、なぜかHttpServletクラスとかが使えない。


③Eclipseプラグインとか使えばうまくいくかも
WTPプラグインってのを入れたら、うまくいきそうな気がした。

http://www.javaroad.jp/opensource/js_eclipse5.htm


④クラスパスを設定するばいいじゃね
Q&Aサイトで面白いものを見つけました。

http://oshiete.goo.ne.jp/qa/2026313.html

JDBCのときにもさりげなく使っていたビルドパス→外部JARファイルの設定だけどl、
これってクラスパスを設定するためにあったのね。
No.2の答えによると、Tomcatをインストールしたフォルダの中にあるcommon\lib\servlet.jarの中でHttpServletクラスとかが定義されてるみたい。

このページのトップヘ

見出し画像
×