Going my way

いいなと思ったことをメモしていきます。

tomcatの基本設定のまとめ。


Advertisements


■web.xmlについて

web.xmlのルートはタグである。

web.xmlサーブレットを登録する

<servlet>
  <servlet-name>サーブレット名</servlet-name>
  <servlet-class>サーブレットクラス名</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>サーブレット名</servlet-name>
  <url-pattern>マッピングするURLパターン</url-pattern>
</servlet-mapping>

サーブレットの呼び出し
http://<ホスト名>:<ポート番号>/<コンテキストルート名>/

コンテキストルートとは、tomcatのwepappsの下に置かれるフォルダーのこと。


tomcatで一番最初に悩むのは環境設定だと思う。
eclipseを使うのはまだ後回しで、基本から見ていこう。

C:\Program Files (x86)\Apache Software Foundation\apache-tomcat-6.0.35>dir
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は 9061-B91A です

 C:\Program Files (x86)\Apache Software Foundation\apache-tomcat-6.0.35 のディレ
クトリ

2012/04/28  23:03    <DIR>          .
2012/04/28  23:03    <DIR>          ..
2012/04/28  23:03    <DIR>          bin
2012/09/13  23:06    <DIR>          conf
2012/04/28  23:03    <DIR>          lib
2012/04/28  23:03            38,657 LICENSE
2012/09/21  00:46    <DIR>          logs
2012/04/28  23:03               574 NOTICE
2012/04/28  23:03             8,680 RELEASE-NOTES
2012/04/28  23:03             6,836 RUNNING.txt
2012/04/28  23:03    <DIR>          temp
2012/09/21  00:22    <DIR>          webapps
2012/04/28  23:38    <DIR>          work
               4 個のファイル              54,747 バイト
               9 個のディレクトリ  146,112,778,240 バイトの空き領域

C:\Program Files (x86)\Apache Software Foundation\apache-tomcat-6.0.35>

tomcat以下のディレクトリだが、webapps直下にあるフォルダーがコンテキストルートとなる。

繰り返すが、ブラウザで叩くのは、このような形式だ。
http://<ホスト名>:<ポート番号>/<コンテキストルート名>/


webapps以下にweb_compというコンテキストルートがあるとする。
その下に置くのは、WEB-INFというフォルダである。

└─web_comp
    └─WEB-INF
        ├─classes
        │  ├─chap1
        │  └─chap2
        └─src
            ├─chap1
            └─chap2

フォルダーはこんな感じだ。
classesやsrcを置く。

重要なのがweb.xmlである。
これはコンテキストルート直下に置く。

└─web_comp
    └─WEB-INF
        │  web.xml
        │
        ├─classes
        │  ├─chap1
        │  │      Sample1_1.class
        │  │
        │  └─chap2
        │          Sample2_1.class
        │
        └─src
            ├─chap1
            │      Sample1_1.java
            │
            └─chap2
                    Sample2_1.java

src以下にサーブレットのソースを書き、classes以下にコンパイルしたソースを格納する。

tomcatのbinフォルダがあると思うが、
その中のshutdown.bat→startup.batで変更が反映される。

http://localhost:8082/web_comp/2_1

とブラウザから入力すると、Sample2_1で書いたソースの結果がブラウザに表示される。

そのときのweb.xmlは以下の通り。

<?xml version="1.0" encoding="shift_jis"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com./xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
	<servlet>
	  <servlet-name>Sample1_1</servlet-name>
	  <servlet-class>chap1.Sample1_1</servlet-class>
	</servlet>
	<servlet-mapping>
	  <servlet-name>Sample1_1</servlet-name>
	  <url-pattern>/1_1</url-pattern>
	</servlet-mapping>
	
	<servlet>
	  <servlet-name>Sample2_1</servlet-name>
	  <servlet-class>chap2.Sample2_1</servlet-class>
	</servlet>
	<servlet-mapping>
	  <servlet-name>Sample2_1</servlet-name>
	  <url-pattern>/2_1</url-pattern>
	</servlet-mapping>
	
</web-app>

マッピングの名前とサーブレットの定義の名前を"一致させる"こと。
あとは、url-patternに書いたものをちゃんとブラウザのアドレスバーに指定すること。

一回表示できるようになったら後は簡単だ。
JavaEEは厳密にフォルダー体系が決められている。だから、まずはちゃんとxmlの意味や、フォルダの位置の意味を理解する必要がある。

そうしないと、いつまでも

HTTPステータス 404 -
 The requested resource is not available.

なんて不愉快なエラーに悩まされ、パソコンを殴りたくなる衝動と格闘しなければならないだろう。

最低限を書いたが、プロジェクトの都合上一刻も早くちゃんと調べたい人は、以下の書籍を買うべきである。

SUN教科書 Webコンポーネントディベロッパ(SJC-WC) 試験番号:310-083

サーブレット/JSP プログラミングテクニック