□技術メモ - Javaによるwebapp開発 ※管理人の個人的な技術メモです。サンプルソースを実行した結果について 管理人はいかなる責任も負いかねますのでご自身の責任でお試しください。 ----------------------------------------------------------- ○サーブレットについて(基本事項) (1)以下の環境変数が設定されていることを確認する。 JAVA_HOME C:\Program Files\Java\JDKx.x.x_xx path %JAVA_HOME%\bin CATALINA_HOME C:\Program Files\Apache SoftWare Foundation\Tomcat 6.0 (2)Tomcatについて ・動作確認 起動していれば以下のアドレスでロゴのある画面が表示される。 localhost:8080/index.html (もしくは localhost:8080) ・左上のStatusを選択してuser/passを入力すると、サーバの状態が確認できる。 ここからアプリケーションの一覧を確認できる。 ・以下からドキュメントを参照できる。 ...\Tomcat 6.0\webapps\docs\index.html 下の方にリンクがあり、servletとJSPのリファレンスを参照できる。 Servlet API Javadocs , JSP API Javadocs ・起動、停止、再起動 コントロールパネル - 管理ツール - サービス画面にて、Tomcat 6.0を右クリックして操作 もしくは タスクバーのアイコンを右クリック - Configureで設定画面を開く (3)コンパイルの仕方 javac -cp (servlet.jarへのパス) クラス名.java 例: javac -cp "C:\Program Files\Apache SoftWare Foundation\Tomcat 6.0\lib\servlet-api.jar" testservlet.java (4)フォルダ構成 ・rootフォルダの位置は通常は以下の通りだが、別の場所を設定することもできる(以下参照) ...\Tomcat 6.0\webapps\rootフォルダ(コンテキスト名と同じ) ・フォルダ構成(+が付いているのはフォルダ) +root 任意ファイル (html , jsp , 画像などを配置) +任意フォルダ (html , jsp , 画像などを配置) +WEB-INF +classes (ここにコンパイル済みの .classファイル を置く) +lib (.jarなど) web.xml (設定ファイル) ・参考:フォルダ構成は以下のようになるはず +Tomcat 6.0 +webapps +コンテキスト名 +WEB-INF +classes +lib web.xml ----------------------------------------------------------- ○サーブレットについて(動作手順) (1)エンジン名、ホスト名の取得 以下のファイルより取得する。 ...\tomcat 6.0\conf\server.xml デフォルトでは以下の設定になっている。 (2)コンテキスト名の取得 \tomcat 6.0\conf\[エンジン名]\[ホスト名] 上記と同じなら以下になる。 \tomcat 6.0\conf\Catalina\localhost\ この中に複数のxmlが存在する。 例: hello.xml test1.xml test2.xml ... (3)コンテキストの設定 例: hello.xml 'rootフォルダの指定。通常はこの直下のindex.htmlが最初に呼ばれる。 (4)ブラウザにて呼び出し。 以下のアドレスを指定して開始 http://localhost:8080/hello/index.html ・このアドレスの「 /hello 」 部分より、hello.xmlが参照され、docBaseが取得される。 docBase内のindex.htmlが呼ばれるのだから、要は c:/TryServlet/helloworld/index.htmlが最初に開かれる。 (5)web.xmlの設定 urlのパス→サーブレット名→クラス名という変換を行う。 ・以下をからの間に設定する , は新たにそれぞれ1つ設定する。 ・テンプレートは以下の通り。 web.xml -------- ... '←ここに追加する -------- ・以下を追加 -------- test2 'servlet-nameを経由してservlet-classに至る '2段階の変換にした方がセキュリティは良い testservlet '実行されるクラス名 test2 'servlet-nameを経由してservlet-classに至る '2段階の変換にした方がセキュリティは良い test 'urlのパス -------- (6)index.html内のリンク ・index.html内のリンクが、/hello/test の場合 → web.xmlにて変換 → C:/TryServlet/helloworld/WEB-INF/classes/testservlet.class 'このクラスが実行される。 ・このときブラウザのアドレス表記は以下になる。 http://localhost:8080/hello/test