web.xml

●web.xmlの概要
●web.xmlの設定例
●web.xmlの設定タグ

●web.xmlの概要

 サーブレット2.4仕様によるとWebアプリケーションにはその動作を規定する配備記述子(Deployment Descriptor)を指定する必要があり、配備記述子はweb.xmlに記載する必要があるとされています。web.xmlにはサーブレット定義、セッション定義、認証設定、ウェルカム・エラーページ設定などWebアプリケーションの動作を規定する設定を行います。

 Tomcatではweb.xmlは$CATALINA_HOME/confディレクトリ配下、または各コンテキストディレクトリ/WEB-INFディレクトリ配下に設置します。$CATALINA_HOME/confディレクトリ配下のweb.xmlはデフォルトで用意されており、すべてのコンテキスト(Webアプリケーション)に適用されます。各コンテキストディレクトリ/WEB-INFディレクトリ配下のweb.xmlは各コンテキストごとの動作に適用されます。

●web.xmlの設定例

 web.xmlの設定例について解説します。Javaの道:Tomcat(プログラム配置・実行)でも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">
<!-- 1.DTD宣言の設定 -->
<web-app>
  <!-- 2.servletタグの設定 -->
  <servlet>
    <servlet-name>ShowDate</servlet-name>
    <servlet-class>ShowDateServlett</servlet-class>
  </servlet>
  <!-- 3.servlet-mappingタグの設定 -->
  <servlet-mapping>
    <servlet-name>ShowDate</servlet-name>
    <url-pattern>/SDate</url-pattern>
  </servlet-mapping>
  <!-- 4.security-constraintタグの設定 -->
  <security-constraint>
    <web-resource-collection>
      <web-resource-name>Basic Authentication</web-resource-name>
      <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
      <role-name>admin</role-name>
    </auth-constraint>
  </security-constraint>
  <!-- 5.login-configタグの設定 -->
  <login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>UserDatabaseRealm</realm-name>
  </login-config>
</web-app>
●web.xmlの設定タグ

 以下にweb.xmlに設定できるタグを記載します。web.xmlで記載できるタグは非常に多いため、トップレベルのタグのみ解説します。サブ要素、タグの属性についてはサーブレット2.4仕様(P135?P152)を参照してください。サーブレット仕様2.4はサンマイクロシステムズのサイトからダウンロードできます。
 サーブレット2.4仕様:http://java.sun.com/products/servlet/download.html#specs

  
<web-app>タグ
内容 web.xmlで最上位のタグです。web.xmlで一つのみ存在します。
要素の数 1つのみ
サブ要素 <description>, <display-name>, <icon>, <distributable>, <context-param>, <filter>, <filter-mapping>, <listener>, <servlet>, <servlet-mapping>, <session-config>, <mime-mapping>, <welcome-file-list>, <error-page>, <jsp-config>, <security-constraint>, <login-config>, <security-role>, <env-entry>, <ejb-ref>, <ejb-local-ref>, <service-ref>, <resource-ref>, <resource-env-ref>, <message-destination-ref>, <message-destination>, <locale-encoding-mapping-list>

  
<description>タグ
内容 コンテキストの説明を記載します。
要素の数 0または1
サブ要素 無し

  
<display-name>タグ
内容 GUIツールで表示されるコンテキストの名前を指定します。
要素の数 0または1
サブ要素 無し

  
<icon>タグ
内容 GUIツールで表示される画像を指定します。
要素の数 0または1
サブ要素 <small-icon>, <large-icon>

  
<distributable>タグ
内容 コンテキストが分散処理が可能なように作成されているかを表します。
要素の数 0または1
サブ要素 無し

  
<context-param>タグ
内容 コンテキストの初期化パラメータを指定できます。サーブレット、JSPからパラメータで設定した値を参照できます。
要素の数 0以上
サブ要素 無し

  
<filter>タグ
内容 クライアントとの送受信データをフィルタし、圧縮、データ変換など様々な処理を行います。
要素の数 0以上
サブ要素 <description>, <display-name>, <icon>, <filter-name>, <filter-class>, <init-param>

  
<filter-mapping>タグ
内容 どの送受信データにフィルタ処理を適用するか指定します。適用はURLパターンか、サーブレット名で指定できます。
要素の数 0以上
サブ要素 <filter-name>, <url-pattern>, <servlet-name>, <dispatcher>

  
<listener>タグ
内容 何らかのイベントにより動作するlistenerクラスの説明を記載します。
要素の数 0以上
サブ要素 <description>, <display-name>, <icon>, <listener-class>

  
<servlet>タグ
内容 初期化パラメータ、メモリロードのタイミングなどサーブレットクラスに対する振る舞いを指定します。ここで指定されたサーブレットクラスの名称はweb.xmlの他のタグから参照されます。
要素の数 0以上
サブ要素 <description>, <display-name>, <icon>, <servlet-name>, <servlet-class>, <jsp-file>, <init-param>, <load-on-startup>, <run-as>, <security-role-ref>
詳細解説 Javaの道:Tomcat(プログラム配置・実行)

  
<servlet-mapping>タグ
内容 URLでアクセスする際のサーブレットクラスの名称を指定します。
要素の数 0以上
サブ要素 <servlet-name>, <url-pattern>
詳細解説 Javaの道:Tomcat(プログラム配置・実行)

  
<session-config>タグ
内容 コンテキストのセッション保持時間を指定します。
要素の数 0または1
サブ要素 <session-timeout>

  
<mime-mapping>タグ
内容 ファイル拡張子とMIMEタイプのマッピングを設定します。ブラウザは送られてきたMIMEタイプにより処理するアプリケーション(動画再生、PDFリーダーなど)を判断します。
要素の数 0以上
サブ要素 <extension>, <mime-type>

  
<welcome-file-list>タグ
内容 URLでファイル名を指定しないアクセスがあった場合に表示されるファイル(index.html,index.jspなど)を指定します。コンテキストのルートディレクトリが指定された時だけでなく、サブディレクトリが指定された時にも適用されます。
要素の数 0または1
サブ要素 <welcome-file>

  
<error-page>タグ
内容 HTTPエラーコード、Java例外クラスに対応したエラーページを設定します。
要素の数 0以上
サブ要素 <error-code>, <exception-type>, <location>

  
<jsp-config>タグ
内容 JSPの振る舞いを指定します。JSPタグライブラリを使用する場合はここで、タグライブラリの定義ファイル(拡張子.tld)を指定します。
要素の数 0以上
サブ要素 <taglib>, <jsp-property-group>

  
<security-constraint>タグ
内容 コンテナに認証を付与したい場合に使用します。認証の対象となるリソース、認証を許可するロール、SSLなどのデータ保護を指定します。
要素の数 0以上
サブ要素 <display-name>, <web-resource-collection>, <auth-constraint>, <user-data-constraint>
詳細解説 Javaの道:Tomcat(BASIC認証)
Javaの道:Tomcat(FORM認証)
Javaの道:Tomcat(JDBCレルムによるFORM認証)

  
<login-config>タグ
内容 コンテナに認証を付与する場合に使用します。BASIC認証・FORM認証などの認証方式、メモリレルム・JDBCレルムなどのレルム方式を指定します。
要素の数 0または1
サブ要素 <auth-method>, <realm-name>, <form-login-config>
詳細解説 Javaの道:Tomcat(BASIC認証)
Javaの道:Tomcat(FORM認証)
Javaの道:Tomcat(JDBCレルムによるFORM認証)

  
<security-role>タグ
内容 認証で使用するロールを定義します。
要素の数 0以上
サブ要素 <description>, <realm-name>

  
<env-entry>タグ
内容 JNDIパラメータを指定します。アプリケーションからJNDIルックアップなどを使用し、パラメータを参照できます。
要素の数 0以上
サブ要素 <description>, <env-entry-name>, <env-entry-type>, <env-entry-value>

  
<ejb-ref>タグ
内容 HomeエンタープライズBeansへの参照に関する設定をします。
要素の数 0以上
サブ要素 <description>, <ejb-ref-name>, <ejb-ref-type>, <home>, <remote>, <ejb-link>

  
<ejb-local-ref>タグ
内容 LocalHomeエンタープライズBeansへの参照に関する設定をします。
要素の数 0以上
サブ要素 <description>, <ejb-ref-name>, <ejb-ref-type>, <local-home>, <local>, <ejb-link>

  
<service-ref>タグ
内容 Webサービスへの参照に関する設定をします。
要素の数 0以上
サブ要素 <description>, <display-name>, <icon>, <service-ref-name>, <service-interface>, <wsdl-file>, <jaxrpc-mapping-file>, <service-qname>, <port-component-ref>, <handler>

  
<resource-ref>タグ
内容 JNDIリソースへの参照に関する設定をします。
要素の数 0以上
サブ要素 <description>, <res-ref-name>, <res-type>, <res-auth>, <res-sharing-scope>
詳細解説 Javaの道:Tomcat(JDBC接続)

  
<resource-env-ref>タグ
内容 Managerツールなど管理用オブジェクトへの参照に関する設定をします。
要素の数 0以上
サブ要素 <description>, <resource-env-ref-name>, <resource-env-ref-type>
  
<message-destination-ref>タグ
内容 メッセージデスティネーションへの参照に関する設定をします。
要素の数 0以上
サブ要素 <description>, <message-destination-ref-name>, <message-destination-type>, <message-destination-usage>, <message-destination-link>

  
<message-destination>タグ
内容 メッセージデスティネーションの名称を設定します。
要素の数 0以上
サブ要素 <description>, <display-name>, <icon>, <message-destination-name>

  
<locale-encoding-mapping-list>タグ
内容 ロケール(jaなど)とエンコーディング方法(eucなど)のマッピングを設定します。
要素の数 0以上
サブ要素 <locale-encoding-mapping>