| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

「2.3 配備記述子の要素に対応する正しい構造を構築する」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
(ページの作成:「[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.x…」)
 
 
(同じ利用者による、間の3版が非表示)
3行目: 3行目:
 
[http://java.sun.com/xml/ns/j2ee/jsp_2_0.xsd jsp_2_0.xsd]
 
[http://java.sun.com/xml/ns/j2ee/jsp_2_0.xsd jsp_2_0.xsd]
 
====error-page====
 
====error-page====
エラーコードもしくは例外をWebアプリケーションのリソースと結びつける
+
エラーコードもしくは例外を[[Webアプリケーション]]のリソースと結びつける
 
=====error-code=====
 
=====error-code=====
例えば 404 のような、HTTPエラーコードを指定する
+
例えば 404 のような、[[HTTP]]エラーコードを指定する
  
 
=====exception-type=====
 
=====exception-type=====
 
[http://java.sun.com/docs/books/jls/third_edition/html/binaryComp.html#13.1 javaクラスまたはインターフェース名]を指定する。この名前は、Class.forName() から利用される
 
[http://java.sun.com/docs/books/jls/third_edition/html/binaryComp.html#13.1 javaクラスまたはインターフェース名]を指定する。この名前は、Class.forName() から利用される
 
=====location=====
 
=====location=====
'/' で始まる、Webアプリケーションルートからの相対パスでリソースを指定する
+
'/' で始まる、[[Webアプリケーション]]ルートからの相対パスでリソースを指定する
 
=====例=====
 
=====例=====
  
17行目: 17行目:
  
 
web.xml
 
web.xml
  <error-page>
+
  &lt;error-page&gt;
   <error-code>404</error-code>
+
   &lt;error-code&gt;404&lt;/error-code&gt;
   <location>/jsp/Section2_3_error.jsp</location>
+
   &lt;location&gt;/jsp/Section2_3_error.jsp&lt;/location&gt;
  </error-page>
+
  &lt;/error-page&gt;
 
    
 
    
  <error-page>
+
  &lt;error-page&gt;
   <exception-type>java.lang.NumberFormatException</exception-type>
+
   &lt;exception-type&gt;java.lang.NumberFormatException&lt;/exception-type&gt;
   <location>/jsp/Section2_3_error.jsp</location>
+
   &lt;location&gt;/jsp/Section2_3_error.jsp&lt;/location&gt;
  </error-page>
+
  &lt;/error-page&gt;
  
 
*サーブレットコンテナが、エラー発生時に以下の情報をリクエストにセットする
 
*サーブレットコンテナが、エラー発生時に以下の情報をリクエストにセットする
44行目: 44行目:
 
|javax.servlet.error.exception
 
|javax.servlet.error.exception
 
|-
 
|-
|リクエストURI
+
|リクエストU[[R]]I
 
|javax.servlet.error.request_uri
 
|javax.servlet.error.request_uri
 
|-
 
|-
54行目: 54行目:
 
jsp
 
jsp
 
  ステータスコード
 
  ステータスコード
  <%= request.getAttribute("javax.servlet.error.status_code") %>
+
  &lt;%= request.getAttribute("javax.servlet.error.status_code") %&gt;
  
 
*Internet Explorer の場合、[http://support.microsoft.com/?scid=kb;ja;218155&spid=2073&sid=360 Microsoft HTTP エラーメッセージを簡易表示する] にチェックが入っていると、エラーコードに対応する応答バイト数が閾値を超えない場合、(エラーコードにより、256、512・・・) web.xml に、error-page を設定しても、 Microsfot のデフォルトのエラーページが表示されてしまうので注意
 
*Internet Explorer の場合、[http://support.microsoft.com/?scid=kb;ja;218155&spid=2073&sid=360 Microsoft HTTP エラーメッセージを簡易表示する] にチェックが入っていると、エラーコードに対応する応答バイト数が閾値を超えない場合、(エラーコードにより、256、512・・・) web.xml に、error-page を設定しても、 Microsfot のデフォルトのエラーページが表示されてしまうので注意
68行目: 68行目:
 
=====例=====
 
=====例=====
 
web.xml
 
web.xml
  <servlet>
+
  &lt;servlet&gt;
   <servlet-name>Section2_3Servlet</servlet-name>
+
   &lt;servlet-name&gt;Section2_3Servlet&lt;/servlet-name&gt;
   <servlet-class>servlet.Section2_3Servlet</servlet-class>
+
   &lt;servlet-class&gt;servlet.Section2_3Servlet&lt;/servlet-class&gt;
   <init-param>
+
   &lt;init-param&gt;
     <param-name>auther</param-name>
+
     &lt;param-name&gt;auther&lt;/param-name&gt;
     <param-value>YAGI Hiroto</param-value>
+
     &lt;param-value&gt;YAGI Hiroto&lt;/param-value&gt;
   </init-param>
+
   &lt;/init-param&gt;
   <init-param>
+
   &lt;init-param&gt;
     <param-name>created</param-name>
+
     &lt;param-name&gt;created&lt;/param-name&gt;
     <param-value>2006-04-16 02:31</param-value>
+
     &lt;param-value&gt;2006-04-16 02:31&lt;/param-value&gt;
   </init-param>
+
   &lt;/init-param&gt;
  </servlet>
+
  &lt;/servlet&gt;
  
 
servlet.Section2_3Servlet.java
 
servlet.Section2_3Servlet.java
*ServletConfig経由で、初期化パラメータを取得できる
+
*ServletConfig経由で、[[初期化パラメータ]]を取得できる
 
*GenericServletクラスは、ServletConfigを実装しているため、HttpServletから直接、getInitParameter()メソッドなど利用することも可能
 
*GenericServletクラスは、ServletConfigを実装しているため、HttpServletから直接、getInitParameter()メソッドなど利用することも可能
  
101行目: 101行目:
 
=====例=====
 
=====例=====
  
  <mime-mapping>
+
  &lt;mime-mapping&gt;
   <extension>csv</extension>
+
   &lt;extension&gt;csv&lt;/extension&gt;
   <mime-type>application/vnd.ms-excel</mime-type>
+
   &lt;mime-type&gt;application/vnd.ms-excel&lt;/mime-type&gt;
  </mime-mapping>
+
  &lt;/mime-mapping&gt;
  
 
上記のように指定すると、レスポンスヘッダーにContent-Type が出力される
 
上記のように指定すると、レスポンスヘッダーにContent-Type が出力される
  
  HTTP/1.1 200 OK
+
  [[HTTP]]/1.1 200 OK
  Server: Apache-Coyote/1.1
+
  Server: [[Apache]]-Coyote/1.1
 
  ETag: W/"240-1145124316909"
 
  ETag: W/"240-1145124316909"
 
  Last-Modified: Sat, 15 Apr 2006 18:05:16 GMT
 
  Last-Modified: Sat, 15 Apr 2006 18:05:16 GMT
118行目: 118行目:
 
====servlet====
 
====servlet====
 
サーブレットの宣言に利用。サーブレットに対する宣言型のデータを含む。
 
サーブレットの宣言に利用。サーブレットに対する宣言型のデータを含む。
jsp-file を定義して、load-on-startup 要素が存在する場合、JSPは事前にコンパイルされ、ロードされる必要がある。
+
jsp-file を定義して、load-on-startup 要素が存在する場合、[[JSP]]は事前にコンパイルされ、ロードされる必要がある。
 
=====servlet-name=====
 
=====servlet-name=====
サーブレットの名を指定する。サーブレット名は、Webアプリケーション内で一意である必要がある。
+
サーブレットの名を指定する。サーブレット名は、[[Webアプリケーション]]内で一意である必要がある。
 
=====[#p4 servlet-class]=====
 
=====[#p4 servlet-class]=====
 
[http://java.sun.com/docs/books/jls/third_edition/html/binaryComp.html#13.1 javaクラスまたはインターフェース名。]を指定する。この名前は、Class.forName() から利用される。
 
[http://java.sun.com/docs/books/jls/third_edition/html/binaryComp.html#13.1 javaクラスまたはインターフェース名。]を指定する。この名前は、Class.forName() から利用される。
 
=====jsp-file=====
 
=====jsp-file=====
WebアプリケーションのJSPファイルの'/'から始まるフルパスを指定する。
+
[[Webアプリケーション]]のJSPファイルの'/'から始まるフルパスを指定する。
 
=====[#p1 init-param]=====
 
=====[#p1 init-param]=====
 
[#p1 サーブレット、フィルター 初期化用の名前と値のペアを指定]
 
[#p1 サーブレット、フィルター 初期化用の名前と値のペアを指定]
 
=====load-on-startup=====
 
=====load-on-startup=====
Webアプリケーションが起動時にサーブレットがロードされているべきかを指示する。
+
[[Webアプリケーション]]が起動時にサーブレットがロードされているべきかを指示する。
 
{|class="wikitable"
 
{|class="wikitable"
 
!値
 
!値
159行目: 159行目:
 
指定する
 
指定する
 
====servlet-mapping====
 
====servlet-mapping====
サーブレットとURLパターンのマッピングを定義する
+
サーブレットとU[[R]]Lパターンのマッピングを定義する
 
=====[#p3 servlet-name]=====
 
=====[#p3 servlet-name]=====
 
servlet 要素で定義されるサーブレット名を指定
 
servlet 要素で定義されるサーブレット名を指定
 
=====url-pattern=====
 
=====url-pattern=====
servlet に結び付けられるURLのパターン
+
servlet に結び付けられるU[[R]]Lのパターン
  
 
[[File:0088_mapping_url_servlet.jpg]]
 
[[File:0088_mapping_url_servlet.jpg]]
170行目: 170行目:
 
!名称
 
!名称
 
!内容
 
!内容
!HttpServletRequest が提供するメソッド
+
!HttpServlet[[R]]equest が提供するメソッド
 
|-
 
|-
 
|Context path
 
|Context path
|リクエストURIの先頭からWebアプリケーション名と一致するできるだけ長い部分。一致しない場合、デフォルトアプリケーションに結びつけられる。
+
|リクエストURIの先頭から[[Webアプリケーション]]名と一致するできるだけ長い部分。一致しない場合、デフォルトアプリケーションに結びつけられる。
 
|getContextPath()
 
|getContextPath()
 
|-
 
|-
 
|Servlet path
 
|Servlet path
|リクエストURIの先頭から、Context path 部分を除いた残りから、サーブレットマッピングに一致するできるだけ長い部分。一致しない場合、エラーページが返される。
+
|リクエストU[[R]]Iの先頭から、Context path 部分を除いた残りから、サーブレットマッピングに一致するできるだけ長い部分。一致しない場合、エラーページが返される。
 
|getServletPath()
 
|getServletPath()
 
|-
 
|-
186行目: 186行目:
 
|}
 
|}
  
#Request URI = context path + servlet + path info
+
#[[R]]equest U[[R]]I = context path + servlet + path info
 
#コンテキストパス、サーブレットパスは '/' で始まるが、'/' では終わらない
 
#コンテキストパス、サーブレットパスは '/' で始まるが、'/' では終わらない
  
194行目: 194行目:
 
=====例=====
 
=====例=====
 
web.xml
 
web.xml
  <servlet>
+
  &lt;servlet&gt;
   <servlet-name>Section2_3Servlet2</servlet-name>
+
   &lt;servlet-name&gt;Section2_3Servlet2&lt;/servlet-name&gt;
   <servlet-class>servlet.Section2_3Servlet2</servlet-class>
+
   &lt;servlet-class&gt;servlet.Section2_3Servlet2&lt;/servlet-class&gt;
  </servlet>
+
  &lt;/servlet&gt;
  <servlet-mapping>
+
  &lt;servlet-mapping&gt;
   <servlet-name>Section2_3Servlet2</servlet-name>
+
   &lt;servlet-name&gt;Section2_3Servlet2&lt;/servlet-name&gt;
   <url-pattern>/sec2_3</url-pattern>
+
   &lt;url-pattern&gt;/sec2_3&lt;/url-pattern&gt;
  </servlet-mapping>
+
  &lt;/servlet-mapping&gt;
  <servlet-mapping>
+
  &lt;servlet-mapping&gt;
   <servlet-name>Section2_3Servlet2</servlet-name>
+
   &lt;servlet-name&gt;Section2_3Servlet2&lt;/servlet-name&gt;
   <url-pattern>/sec2/subsec3/*</url-pattern> <!-- '*' が必要 -->
+
   &lt;url-pattern&gt;/sec2/subsec3/*&lt;/url-pattern&gt; &lt;!-- '*' が必要 --&gt;
  </servlet-mapping>
+
  &lt;/servlet-mapping&gt;
  <servlet-mapping>
+
  &lt;servlet-mapping&gt;
   <servlet-name>Section2_3Servlet2</servlet-name>
+
   &lt;servlet-name&gt;Section2_3Servlet2&lt;/servlet-name&gt;
   <url-pattern>*.map</url-pattern>
+
   &lt;url-pattern&gt;*.map&lt;/url-pattern&gt;
  </servlet-mapping>
+
  &lt;/servlet-mapping&gt;
  
 
呼び出し例 (context path は /scwcd とする)
 
呼び出し例 (context path は /scwcd とする)
 
  1. 完全に一致
 
  1. 完全に一致
 
  /scwcd/sec2_3
 
  /scwcd/sec2_3
  2. URLのツリーを下って一致
+
  2. U[[R]]Lのツリーを下って一致
 
  /scwcd/sec2/subsec3/about_servletmapping
 
  /scwcd/sec2/subsec3/about_servletmapping
 
  3. 拡張子が一致
 
  3. 拡張子が一致
221行目: 221行目:
 
  /scwcd/s2/sb3/about_servletmapping/extent.map/pathinfo
 
  /scwcd/s2/sb3/about_servletmapping/extent.map/pathinfo
 
====servlet-name====
 
====servlet-name====
サーブレット名を指定する。サーブレット名はWebアプリケーション内で一意になるように設定する。
+
サーブレット名を指定する。サーブレット名は[[Webアプリケーション]]内で一意になるように設定する。
 
====welcome-file====
 
====welcome-file====
 
index.htmlのような、デフォルトのウェルカムファイルを指定する。
 
index.htmlのような、デフォルトのウェルカムファイルを指定する。
  
  <welcome-file-list>
+
  &lt;welcome-file-list&gt;
   <welcome-file>welcome.html</welcome-file>
+
   &lt;welcome-file&gt;welcome.html&lt;/welcome-file&gt;
  </welcome-file-list>
+
  &lt;/welcome-file-list&gt;
 
----
 
----
2.4 WARファイルの目的およびコンテンツ、構造についての説明  
+
[[2.4 WARファイルの目的およびコンテンツ、構造についての説明]]
 
{{amazon|1932394389}}
 
{{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 (ペーパーバック)]
 
[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 (ペーパーバック)]

2020年2月16日 (日) 04:21時点における最新版

j2ee_1_4.xsd web-app_2_4.xsd jsp_2_0.xsd

error-page

エラーコードもしくは例外をWebアプリケーションのリソースと結びつける

error-code

例えば 404 のような、HTTPエラーコードを指定する

exception-type

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>
  • サーブレットコンテナが、エラー発生時に以下の情報をリクエストにセットする
内容 キー
ステータスコード 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 のデフォルトのエラーページが表示されてしまうので注意

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タイプのマッピングを定義 RFC 2045 Multipurpose Internet Mail Extensions 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]

javaクラスまたはインターフェース名。を指定する。この名前は、Class.forName() から利用される。

jsp-file

WebアプリケーションのJSPファイルの'/'から始まるフルパスを指定する。

[#p1 init-param]

[#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パターンのマッピングを定義する

[#p3 servlet-name]

servlet 要素で定義されるサーブレット名を指定

url-pattern

servlet に結び付けられるURLのパターン

0088 mapping url servlet.jpg

名称 内容 HttpServletRequest が提供するメソッド
Context path リクエストURIの先頭からWebアプリケーション名と一致するできるだけ長い部分。一致しない場合、デフォルトアプリケーションに結びつけられる。 getContextPath()
Servlet path リクエストURIの先頭から、Context path 部分を除いた残りから、サーブレットマッピングに一致するできるだけ長い部分。一致しない場合、エラーページが返される。 getServletPath()
Path info Servlet path を除いた残り。 getPathInfo()
  1. Request URI = context path + servlet + path info
  2. コンテキストパス、サーブレットパスは '/' で始まるが、'/' では終わらない

サーブレットパスの特定 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ファイルの目的およびコンテンツ、構造についての説明

SCWCD Exam Study Kit: Java Web Component Developer Certification (ペーパーバック)