トップページ >  Tomcat >  web.xml
初版2006/09/03: 最終更新日2006/09/03
  web.xml
目次
web.xml
<servlet> ~ </servlet>
<servlet-mapping> ~ </servlet-mapping>
<welcome-file-list> ~ </welcome-file-list>
<session-config> ~ </session-config>
web.xml
web.xmlはサーブレット仕様に準拠したJavaサーブレットコンテナであればどのコンテナでも利用できます。
Tomcatでは、web.xmlは tomcat\conf 配下と tomcat\webapps 配下の各WEBアプリケーションのWEB-INF配下に置かれています。

Tomcatは起動時にまずconf配下のweb.xmlを読み込み、次に各WEBアプリケーションのweb.xmlファイルを読み込みます。
この時、WEBアプリケーション配下にweb.xmlが存在しない場合、コンソール上に警告のメッセージが表示されますが、WEBアプリケーション自体は使用することができます。 以下にweb.xmlの雛形を示します。

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app PUBLIC 
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>


</web-app>
web.xmlは<web-app>要素と</web-app>要素に囲まれています。この要素の中に、他の要素を記述します。
<web-app>要素内に記述できる要素を説明します。
<servlet> ~ </servlet>
この要素はサーブレットクラスを参照する他の要素のために、この要素でサーブレットクラスに対して名前を指定する要素です。
具体的には以下のようにします。

<servlet>
    <servlet-name>aiueo</servlet-name>
    <servlet-class>com.confrage.TestServlet</servlet-class>
</servlet>
<servlet-class>要素でクラスを指定し、そのクラスを参照する他の要素のために<servlet-name>要素で別名を設定しています。
これでweb.xmlに記述されている別要素からこのサーブレットに対して別名を使用して参照することができます。

<servlet-mapping> ~ </servlet-mapping>
この要素はサーブレットとURIの別名を指定します。これによりサーブレットクラス名を隠蔽できるというメリットがありますし、別名を指定していない場合はフォームのアクション属性にサーブレットクラスの完全限定名を指定しなければいけません。
具体的には以下のようにします。

<servlet-mapping>
    <servlet-name>aiueo</servlet-name>
    <url-pattern>/TestServlet</url-pattern>
</servlet-mapping>
<servlet-name>要素からサーブレットクラスはcom.confrage.TestServletになることがわかります。
この<servlet-mapping>要素の設定により、該当サーブレットにアクセスする場合は/TestServletにアクセスすれば良いことがわかります。

但し、このパスはWEBアプリケーションのコンテキストを基点とした相対パスになりますので、WEBアプリケーションが test であった場合、 http://localhost:8080/test/TestServlet ということになります。

<welcome-file-list> ~ </welcome-file-list>
この要素はインデックスファイルの検索順を指定する要素です。この要素はconf\web.xmlに以下のように記述されています。
<welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>
最初にindex.html、次にindex.htm、最後にindex.jspを検索します。これをアプリケーション毎のweb.xmlでオーバーライドすることができます。
webapps配下のアプリケーション配下にあるweb.xml内で以下のように設定します。

<welcome-file-list>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>
index.htmを最初に検索するように変更しました。今ファイル構成が以下のようになっているとします。

<welcome-file-list> ~ </welcome-file-list>
<welcome-file-list> ~ </welcome-file-list>

ここでtomcatを起動し、 こちら にアクセスするとindex.htmが最初に実行されているのがわかります。

<welcome-file-list> ~ </welcome-file-list>
<welcome-file-list> ~ </welcome-file-list>

<session-config> ~ </session-config>
この要素は tomcat\conf 配下のweb.xmlに設定され、セッション有効時間を単位を分で指定します。
またWEBアプリケーション単位でも指定できるので、WEBアプリ配下のweb.xmlにも設定することができます。
具体的には以下のようにします。

<session-config>
    <session-timeout>30</session-timeout>
</session-config>
tomcat\conf\web.xmlに上記設定をすると全てのWEBアプリのセッションタイムアウトが30分になります。
WEBアプリ配下のweb.xmlに設定した場合はそのWEBアプリのみセッションタイムアウトが30分になります。