web.xmlについて
「Webアプリケーションに関する様々な設定を、xml形式で定義するためのもの」
【説明】
web.xmlは
- アクセスされたURLに対して呼び出すクラス
- エラー時に実行する処理の指定
などの設定をします。
【配置箇所】(結論: WEB-INF直下)
web.xmlは 「WEB-INF」ディレクトリ直下 に配置し、Webアプリケーション毎に作成します。
(※「web.xml デプロイメント記述子の生成」にチェックして作成した場合は、デフォルトで作成されます。
【読み込みのタイミング】
Webサーバ(HTTPサーバ)の起動時にWebアプリケーション毎にweb.xmlが読み込まれます。
【web.xmlの基本構造】
「XML宣言」、「DTD宣言」、「本体」の順で構成されています。
【書き方】
<?xml version="1.0" encoding="ISO-8859-1"?> // XML宣言
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" //DTD宣言
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
・・・ // 本体の記述
</web-app>
web.xmlは、Webサーバの起動時に読み込まれ構文チェックが行われます。
- 正しく記述されてない場合は、 「致命的エラー」扱いとなりそのコンテナは動きません。
- 正しく記述されていれば、「本体にどのURLで、どのサーブレットを動かすかという定義必要」となります。
(※サーブレットが上手く機能しない場合は、 web.xmlの設定や書き方に間違いがないかチェックしましょう
【サーブレットの命名の仕方】
<web-app>
<servlet>
<servlet-name>サーブレットの命名</servlet-name>
<servlet-class>パッケージ名.サーブレット名</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>サーブレットの命名</servlet-name>
<url-pattern>/URLのパターン名</url-pattern>
</servlet-mapping>
</web-app>
【サンプル】ユーザーに情報を返すサーブレットの場合
<servlet>
<servlet-name>userInfo</servlet-name>
<servlet-class>UserInfoServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>userInfo</servlet-name>
<url-pattern>/user</url-pattern>
</servlet-mapping>
web-app タグ
サーブレットの命名には「任意の名前」を付与
( ※日本語は付けられません
命名規則
servletタグ
内 と servlet-mappingタグ
内 の2つで実施し、
上記「2つのタグにおけるサーブレットの命名は 同一でなくてはならない。」
servletタグ
servletタグには、servlet-classタグ
があります。記述方法に関しては以下です。
- 「動かしたいサーブレット名を記述」します。
- パッケージ化されている場合は、
helloPackage.HelloServlet
のように「パッケージ込みのサーブレット名を記述」します。
servlet-mapping タグ と url-pattern タグ
このタグ内に記述された文字列で、ブラウザのURL(アドレス)などで指定した場合、
先ほどの動かしたいサーブレットが動作する仕組みとなります。
サーブレットマッピング
上記 servlet-mapping
における設定は、必須 となり、この設定を「 サーブレットマッピング 」と呼びます。
マッピングは「 可読性 と サーブレットの紐づけの親和性 」が高まるようなその機能に合った意味を持つ文言を記述するようにすること。