Webアプリケーションの設定(web.xmlの設定)


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

web.xmlについて

デフォルトで使われるweb.xmlは <Tomcatをインストールしたディレクトリ>\conf\web.xml です。

<servlet>要素

<web-app>
  <servlet>
    <servlet-name>
      サーブレット名
    </servlet-name>
    <servlet-class>
      実際のクラス名
    </servlet-class>
  </servlet>
</web-app>

サーブレットの呼び出し方(invoker)

invokerを使った呼び出し…Tomcat5以降はweb.xmlに記述が必要。
セキュリティ上の問題があるため、あまりお勧めしない。

<servlet-mapping>要素

<web-app>
  <servlet>
    <servlet-name>
      サーブレット名1
    </servlet-name>
    <servlet-class>
      実際のクラス名1
    </servlet-class>
  </servlet>
  :
</web-app>

URLパターン(特定のファイルへのマッピング)

URL(1) http://localhost:8080/webxmltest/helloworld
URL(2) http://localhost:8080/webxmltest/index.html
アプリケーション配置場所 c:\servlet-sample\webxmltest\
web.xmlファイル c:\servlet-sample\webxmltest\WEB-INF\web.xml
コンテキストファイル C:\Program Files\Apache Software Foundation\Tomcat 5.5\conf\Catalina\localhost\webxmltest.xml

URLパターン(パスマッピング)

 :
<url-pattern>
  /hello/*
</url-pattern>
 :
この場合、「http://localhost:8080/webxmltest/hello/」から始まる全ての呼び出しに対して指定のサーブレットを実行する。
下記のどの呼び出し方をしても同じサーブレットが呼び出される。
http://localhost:8080/webxmltest/hello/hellowolrd
http://localhost:8080/webxmltest/hello/index.html
http://localhost:8080/webxmltest/hello/sub/sub2/exsample.jpg
URL(1) http://localhost:8080/webxmltest/hello/abc
http://localhost:8080/webxmltest/hello/xxx.html
URL(2) http://localhost:8080/webxmltest/abc/def/hello
http://localhost:8080/webxmltest/abc/def/xxx.html

URLパターン(拡張子マッピング)

 :
<url-pattern>
  *.gif
</url-pattern>
 :
この場合、呼び出しのURLの最後が「.gif」で終わる全ての呼び出しに対して指定のサーブレットを実行する。
下記のどの呼び出し方をしても同じサーブレットが呼び出される。
http://localhost:8080/webxmltest/sample.gif
http://localhost:8080/webxmltest/hello.gif
http://localhost:8080/webxmltest/hello/abc.gif

URLパターン(デフォルトマッピング)

どのURLマッピングにもマッチしなかった全ての呼び出しに対して対応するサーブレットを呼び出すためのもの。
 :
<url-pattern>
     /
</url-pattern>
 :
「/」だけを記述します。
デフォルトマッピングはパスマッピングで「/*」と記述した場合と同じだが、優先順位が異なる。

URLパターンの優先順位

高 特定のファイルへのマッピング
↑ パスマッピング
↓ 拡張子マッピング
低 デフォルトマッピング

<init-param>要素

<init-param>要素はサーブレットに初期値を設定したい場合に利用する。
プログラム内に直接記述することももちろん出来るが、プログラム内に記述した場合、初期値を変更したい場合にはプログラムを再コンパイルする必要がある。それに対して<init-param>要素に初期値を設定しプログラム内から参照する場合には、初期値を変更した場合でもプログラム自体は再コンパイルする必要がない。

  • <init-param>要素の構成
<servlet>
 :
  <servlet-name>abc</servlet-name>
  <servlet-class>abc</servlet-class>
  <init-param>
    <param-name>
      パラメータ名1
    </param-name>

    <param-value>
      パラメータ値1
    </param-value>
  </init-param>

  <init-param>
    <param-name>
      パラメータ名2
    </param-name>

    <param-value>
      パラメータ値2
    </param-value>
  </init-param>
 :
</servlet>

<init-param>で指定した初期値をサーブレット内で取り出す

"getInitParameter"メソッドの引数には<init-param>要素内の<param-name>要素で記述したパラメータ名を指定する。メソッドの戻り値として<param-value>要素で指定したパラメータ値を取得する事が出来る。
URL http://localhost:8080/webxmltest/kingaku