8,812 バイト追加
、 2020年2月15日 (土) 07:29
[http://java.sun.com/xml/ns/j2ee/j2ee_1_4.xsd j2ee_1_4.xsd]
[http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd web-app_2_4.xsd]
[http://java.sun.com/xml/ns/j2ee/jsp_2_0.xsd jsp_2_0.xsd]
====error-page====
エラーコードもしくは例外をWebアプリケーションのリソースと結びつける
=====error-code=====
例えば 404 のような、HTTPエラーコードを指定する
=====exception-type=====
[http://java.sun.com/docs/books/jls/third_edition/html/binaryComp.html#13.1 javaクラスまたはインターフェース名]を指定する。この名前は、Class.forName() から利用される
=====location=====
'/' で始まる、Webアプリケーションルートからの相対パスでリソースを指定する
=====例=====
*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>
*サーブレットコンテナが、エラー発生時に以下の情報をリクエストにセットする
{|class="wikitable"
!内容
!キー
|-
|ステータスコード
|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 の場合、[http://support.microsoft.com/?scid=kb;ja;218155&spid=2073&sid=360 Microsoft HTTP エラーメッセージを簡易表示する] にチェックが入っていると、エラーコードに対応する応答バイト数が閾値を超えない場合、(エラーコードにより、256、512・・・) web.xml に、error-page を設定しても、 Microsfot のデフォルトのエラーページが表示されてしまうので注意
[[File:0087_ie_http_err.jpg]]
====init-param====
サーブレット、フィルター 初期化用の名前と値のペアを指定する
=====description=====
説明等の記述
=====param-name=====
パラメータ名
=====param-value=====
パラメータ値
=====例=====
web.xml
<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タイプのマッピングを定義
[http://www.ietf.org/rfc/rfc2045.txt RFC 2045 Multipurpose Internet Mail Extensions]
[http://www.iana.org/assignments/media-types/ MIME Media Types]
=====extension=====
拡張子
=====mime-type=====
MIMEタイプ
=====例=====
<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=====
サーブレットの名を指定する。サーブレット名は、Webアプリケーション内で一意である必要がある。
=====[#p4 servlet-class]=====
[http://java.sun.com/docs/books/jls/third_edition/html/binaryComp.html#13.1 javaクラスまたはインターフェース名。]を指定する。この名前は、Class.forName() から利用される。
=====jsp-file=====
WebアプリケーションのJSPファイルの'/'から始まるフルパスを指定する。
=====[#p1 init-param]=====
[#p1 サーブレット、フィルター 初期化用の名前と値のペアを指定]
=====load-on-startup=====
Webアプリケーションが起動時にサーブレットがロードされているべきかを指示する。
{|class="wikitable"
!値
!内容
|-
|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パターンのマッピングを定義する
=====[#p3 servlet-name]=====
servlet 要素で定義されるサーブレット名を指定
=====url-pattern=====
servlet に結び付けられるURLのパターン
[[File:0088_mapping_url_servlet.jpg]]
{|class="wikitable"
!名称
!内容
!HttpServletRequest が提供するメソッド
|-
|Context path
|リクエストURIの先頭からWebアプリケーション名と一致するできるだけ長い部分。一致しない場合、デフォルトアプリケーションに結びつけられる。
|getContextPath()
|-
|Servlet path
|リクエストURIの先頭から、Context path 部分を除いた残りから、サーブレットマッピングに一致するできるだけ長い部分。一致しない場合、エラーページが返される。
|getServletPath()
|-
|Path info
|Servlet path を除いた残り。
|getPathInfo()
|-
|}
#Request URI = context path + servlet + path info
#コンテキストパス、サーブレットパスは '/' で始まるが、'/' では終わらない
'''サーブレットパスの特定'''
[[File:0089_servle_mapping_rule.jpg]]
=====例=====
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ファイルの目的およびコンテンツ、構造についての説明
{{amazon|1932394389}}
[http://www.amazon.co.jp/dp/1932394389?tag=typea09-22&link_code=as3&creativeASIN=1932394389&creative=3999&camp=767 SCWCD Exam Study Kit: Java Web Component Developer Certification (ペーパーバック)]