目次
j2ee_1_4.xsd
web-app_2_4.xsd
jsp_2_0.xsd
error-page
エラーコードもしくは例外をWebアプリケーションのリソースと結びつける
- error-code
- exception-type
javaクラスまたはインターフェース名を指定する。この名前は、Class.forName() から利用される
- location
- 例
- error-page は複数指定できる
- error-code または exception-type のどちらかを指定
web.xml
<error-page> <error-code>404</error-code> <location>/jsp/Section2_3_error.jsp</location> </error-page> <error-page> <exception-type>java.lang.NumberFormatException</exception-type> <location>/jsp/Section2_3_error.jsp</location> </error-page>
- サーブレットコンテナが、エラー発生時に以下の情報をリクエストにセットする
内容 | キー |
---|---|
ステータスコード | javax.servlet.error.status_code |
例外の型 | javax.servlet.error.exception_type |
メッセージ | javax.servlet.error.message |
例外 | javax.servlet.error.exception |
リクエストURI | javax.servlet.error.request_uri |
例外が発生したサーブレット | javax.servlet.error.servlet_name |
jsp
ステータスコード <%= request.getAttribute("javax.servlet.error.status_code") %>
- Internet Explorer の場合、Microsoft HTTP エラーメッセージを簡易表示する にチェックが入っていると、エラーコードに対応する応答バイト数が閾値を超えない場合、(エラーコードにより、256、512・・・) web.xml に、error-page を設定しても、 Microsfot のデフォルトのエラーページが表示されてしまうので注意
init-param
サーブレット、フィルター 初期化用の名前と値のペアを指定する
- description
- param-name
- param-value
- 例
<servlet> <servlet-name>Section2_3Servlet</servlet-name> <servlet-class>servlet.Section2_3Servlet</servlet-class> <init-param> <param-name>auther</param-name> <param-value>YAGI Hiroto</param-value> </init-param> <init-param> <param-name>created</param-name> <param-value>2006-04-16 02:31</param-value> </init-param> </servlet>
servlet.Section2_3Servlet.java
- ServletConfig経由で、初期化パラメータを取得できる
- GenericServletクラスは、ServletConfigを実装しているため、HttpServletから直接、getInitParameter()メソッドなど利用することも可能
ServletConfig config = getServletConfig(); Enumeration paramNames = config.getInitParameterNames(); while (paramNames.hasMoreElements()) { String key = (String) paramNames.nextElement(); out.print( config.getInitParameter(key) ); }
mime-mapping
拡張子とMIMEタイプのマッピングを定義
RFC 2045 Multipurpose Internet Mail Extensions
MIME Media Types
- extension
- mime-type
- 例
<mime-mapping> <extension>csv</extension> <mime-type>application/vnd.ms-excel</mime-type> </mime-mapping>
上記のように指定すると、レスポンスヘッダーにContent-Type が出力される
HTTP/1.1 200 OK Server: Apache-Coyote/1.1 ETag: W/"240-1145124316909" Last-Modified: Sat, 15 Apr 2006 18:05:16 GMT Content-Type: application/vnd.ms-excel Content-Length: 240 Date: Sat, 15 Apr 2006 18:24:42 GMT Connection: close
servlet
サーブレットの宣言に利用。サーブレットに対する宣言型のデータを含む。
jsp-file を定義して、load-on-startup 要素が存在する場合、JSPは事前にコンパイルされ、ロードされる必要がある。
- servlet-name
javaクラスまたはインターフェース名。を指定する。この名前は、Class.forName() から利用される。
- jsp-file
サーブレット、フィルター 初期化用の名前と値のペアを指定
- load-on-startup
値 | 内容 |
---|---|
load-on-startup 要素なし または 負の整数 | サーブレットが呼び出された場合にロード |
0 または 正の整数 | サーブレットコンテナは、ロードと初期化をアプリケーションのデプロイ時に行う。また、数値が小さい順にロードする。 |
- run-as
次の下位要素を含む
- description
- role-name
- security-role-ref
コンポーネントのコードから参照される、セキュリティロールの宣言を行う
次の下位要素を含む
- description
- role-name
- role-link
- 例
- servlet-class もしくは jsp-file のいずれかを選ぶ
servlet-class
サーブレットの[完全限定名(fully qualified name)|http://www.y-adagio.com/public/standards/tr_javalang2/names.doc.html#25430
指定する
servlet-mapping
サーブレットとURLパターンのマッピングを定義する
- url-pattern
名称 | 内容 | HttpServletRequest が提供するメソッド |
---|---|---|
Context path | リクエストURIの先頭からWebアプリケーション名と一致するできるだけ長い部分。一致しない場合、デフォルトアプリケーションに結びつけられる。 | getContextPath() |
Servlet path | リクエストURIの先頭から、Context path 部分を除いた残りから、サーブレットマッピングに一致するできるだけ長い部分。一致しない場合、エラーページが返される。 | getServletPath() |
Path info | Servlet path を除いた残り。 | getPathInfo() |
サーブレットパスの特定
- 例
web.xml
<servlet> <servlet-name>Section2_3Servlet2</servlet-name> <servlet-class>servlet.Section2_3Servlet2</servlet-class> </servlet> <servlet-mapping> <servlet-name>Section2_3Servlet2</servlet-name> <url-pattern>/sec2_3</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>Section2_3Servlet2</servlet-name> <url-pattern>/sec2/subsec3/*</url-pattern> <!-- '*' が必要 --> </servlet-mapping> <servlet-mapping> <servlet-name>Section2_3Servlet2</servlet-name> <url-pattern>*.map</url-pattern> </servlet-mapping>
呼び出し例 (context path は /scwcd とする)
1. 完全に一致 /scwcd/sec2_3 2. URLのツリーを下って一致 /scwcd/sec2/subsec3/about_servletmapping 3. 拡張子が一致 /scwcd/s2/sb3/about_servletmapping/extent.map 4. 一致しない /scwcd/s2/sb3/about_servletmapping/extent.map/pathinfo
servlet-name
サーブレット名を指定する。サーブレット名はWebアプリケーション内で一意になるように設定する。
welcome-file
index.htmlのような、デフォルトのウェルカムファイルを指定する。
<welcome-file-list> <welcome-file>welcome.html</welcome-file> </welcome-file-list>
2.4 WARファイルの目的およびコンテンツ、構造についての説明
SCWCD Exam Study Kit: Java Web Component Developer Certification (ペーパーバック)
YAGI Hiroto (piroto@a-net.email.ne.jp)
twitter http://twitter.com/pppiroto
Copyright© 矢木 浩人 All Rights Reserved.