指定したURLのファイルやサーブレットを表示せずに異なったサーブレットやJSPに対応させることができます。
このサーブレット・マッピングは、servlet-mappingタグで定義します。
servlet-mappingタグは、サーブレットやJSPの名前を定義した、servletタグより後に記述してください。servletタグより前に記述した場合、Webアプリケーションの起動に失敗します。
url-patternタグに同じURLを複数定義した場合は、最後に定義したサーブレット・マッピングが有効となります。
指定したURLが複数のサーブレット・マッピングで有効である場合、以下の順で優先されます。
url-patternタグがファイルやサーブレットの名前の場合
url-patternタグがプレフィックス(パス、識別子)の場合(長い名前の方が優先されます。)
url-patternタグが拡張子の場合
例
“/index.html”と“*.html”のURLが定義されていて、“/index.html”へのアクセスがあった場合、拡張子“*.html”の定義よりファイルの名前“/index.html”の定義が優先されます。
記述形式
<servlet-mapping> <servlet-name>name</servlet-name> <url-pattern>pattern</url-pattern> </servlet-mapping>
タグの内容
タグ名 | 説明 | タグの省略 | 複数の指定 |
---|---|---|---|
servlet-name | リクエストをマッピングするサーブレットやJSPの名前を定義します。 | × | × |
url-pattern | サーブレットやJSPにマッピングするURLを定義します。
| × | × |
記述例
単独のURLに対するマッピング定義を以下に示します。
<servlet> <servlet-name>SendMailServlet</servlet-name> <servlet-class>SendMailServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>SendMailServlet</servlet-name> <url-pattern>/SendMailServlet</url-pattern> </servlet-mapping>
URLのパス情報が“director”のプレフィクスを持つリクエストに対するマッピング定義を以下に示します。
<servlet> <servlet-name>director</servlet-name> <servlet-class>xxx.yyy.DirectorServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>director</servlet-name> <url-pattern>/director/*</url-pattern> </servlet-mapping>
URLが“.do”で終了するリクエストに対するマッピング定義を以下に示します。
<servlet> <servlet-name>action</servlet-name> <servlet-class>xxx.yyy.ActionServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>