[j2ee_1_4.xsd|http://java.sun.com/xml/ns/j2ee/j2ee_1_4.xsd] [web-app_2_4.xsd|http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd] [jsp_2_0.xsd|http://java.sun.com/xml/ns/j2ee/jsp_2_0.xsd] !error-page エラーコードもしくは例外をWebアプリケーションのリソースと結びつける ::error-code 例えば 404 のような、HTTPエラーコードを指定する ::exception-type [javaクラスまたはインターフェース名|http://java.sun.com/docs/books/jls/third_edition/html/binaryComp.html#13.1]を指定する。この名前は、Class.forName() から利用される ::location '/' で始まる、Webアプリケーションルートからの相対パスでリソースを指定する ::例 *error-page は複数指定できる *error-code または exception-type のどちらかを指定 web.xml 404 /jsp/Section2_3_error.jsp java.lang.NumberFormatException /jsp/Section2_3_error.jsp *サーブレットコンテナが、エラー発生時に以下の情報をリクエストにセットする ,内容,キー ,ステータスコード,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 エラーメッセージを簡易表示する|http://support.microsoft.com/?scid=kb;ja;218155&spid=2073&sid=360] にチェックが入っていると、エラーコードに対応する応答バイト数が閾値を超えない場合、(エラーコードにより、256、512・・・) web.xml に、error-page を設定しても、 Microsfot のデフォルトのエラーページが表示されてしまうので注意 {{ref_image ie_http_err.jpg}} !init-param サーブレット、フィルター 初期化用の名前と値のペアを指定する ::description 説明等の記述 ::param-name パラメータ名 ::param-value パラメータ値 ::例 web.xml Section2_3Servlet servlet.Section2_3Servlet auther YAGI Hiroto created 2006-04-16 02:31 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|http://www.ietf.org/rfc/rfc2045.txt] [MIME Media Types|http://www.iana.org/assignments/media-types/] ::extension 拡張子 ::mime-type MIMEタイプ ::例 csv application/vnd.ms-excel 上記のように指定すると、レスポンスヘッダーに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 サーブレットの名を指定する。サーブレット名は、Webアプリケーション内で一意である必要がある。 ::[servlet-class|#p4] [javaクラスまたはインターフェース名。|http://java.sun.com/docs/books/jls/third_edition/html/binaryComp.html#13.1]を指定する。この名前は、Class.forName() から利用される。 ::jsp-file WebアプリケーションのJSPファイルの'/'から始まるフルパスを指定する。 ::[init-param|#p1] [サーブレット、フィルター 初期化用の名前と値のペアを指定|#p1] ::load-on-startup Webアプリケーションが起動時にサーブレットがロードされているべきかを指示する。 ,値,内容 ,load-on-startup 要素なし または 負の整数,サーブレットが呼び出された場合にロード ,0 または 正の整数,サーブレットコンテナは、ロードと初期化をアプリケーションのデプロイ時に行う。また、数値が小さい順にロードする。 ::run-as run-as ID はコンポーネントの実行に使用するために設定する 次の下位要素を含む *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パターンのマッピングを定義する ::[servlet-name|#p3] servlet 要素で定義されるサーブレット名を指定 ::url-pattern servlet に結び付けられるURLのパターン {{ref_image mapping_url_servlet.jpg}} ,名称,内容,HttpServletRequest が提供するメソッド ,Context path,リクエストURIの先頭からWebアプリケーション名と一致するできるだけ長い部分。一致しない場合、デフォルトアプリケーションに結びつけられる。,getContextPath() ,Servlet path,リクエストURIの先頭から、Context path 部分を除いた残りから、サーブレットマッピングに一致するできるだけ長い部分。一致しない場合、エラーページが返される。,getServletPath() ,Path info,Servlet path を除いた残り。,getPathInfo() +Request URI = context path + servlet + path info +コンテキストパス、サーブレットパスは '/' で始まるが、'/' では終わらない '''サーブレットパスの特定''' {{ref_image servle_mapping_rule.jpg}} ::例 web.xml Section2_3Servlet2 servlet.Section2_3Servlet2 Section2_3Servlet2 /sec2_3 Section2_3Servlet2 /sec2/subsec3/* Section2_3Servlet2 *.map 呼び出し例 (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.html ---- 2.4 WARファイルの目的およびコンテンツ、構造についての説明 {{amazon 1932394389}} [SCWCD Exam Study Kit: Java Web Component Developer Certification (ペーパーバック)|http://www.amazon.co.jp/dp/1932394389?tag=typea09-22&link_code=as3&creativeASIN=1932394389&creative=3999&camp=767]