Java SJC-WC試験対策資料 付録。
<?xml version="1.0" encoding="UTF-8"?>
<web-app
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
</web-app>
description * †
- このWebアプリの説明
- 複数可
- xml:lang 属性を付加可能。デフォルト値は xml:lang="en" (English)
- このWebアプリの説明
- 複数可
- xml:lang 属性を付加可能。デフォルト値は xml:lang="en" (English)
icon * †
- GUIツールで表示するためのアイコン名
- GIFかJPEG
small-icon ? †
large-icon ? †
distributable * †
- このプログラムが動くJ2EEコンテナを列挙
- ServletContext#getInitParamter("Webmaster")でここで定義した値を取得できる
description * †
param-name ◇ †
param-value ◇ †
- ここではfilterを構成するクラスの定義
- filter-mappingでURLと関連づけ
<filter>
<filter-name>CharsetEncodingFilter</filter-name>
<filter-class>com.foo.CharsetEncodingFilter</filter-class>
<init-param>
<param-name>charset</param-name>
<param-value>Shift_JIS</param-value>
</init-param>
</filter>
description * †
display-name * †
- GUIツールでweb.xmlを表示するときの表示名
icon * †
- GUIツールでweb.xmlを表示するときのアイコン
filter-name ◇ †
filter-class ◇ †
init-param * †
description * †
param-name ◇ †
param-value ◇ †
- ここではfilterを適用するURLの定義
- filterでフィルタ処理を行うクラスと関連づけ
<filter-mapping>
<filter-name>CharsetEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
filter-name ◇ †
- このフィルタの名前。filterでフィルタ処理を行うクラスと関連づけ
url-pattern or servlet-name ◇ †
dispatcher 0…4 †
- Servlet2.4から加わった要素
- 以下の値を設定可能
設定値 | 説明 |
REQUEST | 通常のリクエスト時にこのフィルタを実行する |
FORWARD | forward時にこのフィルタを実行する |
INCLUDE | include時にこのフィルタを実行する |
ERROR | エラーページに遷移する場合にこのフィルタを実行する |
- 何も設定しないと、REQUEST のみが設定されたと見なされる (Servlet2.3までと同じ振る舞い)
- 何かを設定すると デフォルト設定でなくなることに注意
- たとえば、FORWARD のみを設定すると REQUEST にはこのフィルタは適用されない
- 以下のイベント処理を行うクラスの登録
クラス | イベント |
ServletContextListener? | ServletContext?の生成・消滅時 |
ServletContextAttributeListener? | ServletContext?の属性変更 |
ServletRequestListener? | ServletRequest?の生成・消滅時 |
ServletRequestAttributeListener? | ServletRequest?の属性変更 |
HttpSessionListener? | HttpSession?の生成・消滅時 |
HttpSessionAttributeListener? | HttpSession?の属性変更 |
- Sessionに登録するオブジェクトが実装するオブジェクトはここには定義しないことに注意
クラス | イベント |
HttpSessionActivationListener? | これを実装したクラスが登録されているHttpSession?が、メモリ不足によりHDDに退避(Passivate)/復活(Activate)されるとき |
HttpSessionBindingListener? | これを実装したクラスがHttpSession?に登録・削除されるとき(HttpSession?のタイムアウトによる消滅時) |
description * †
display-name * †
icon * †
- GUIツールでweb.xmlを表示するときのアイコン
listener-class †
description * †
display-name * †
icon * †
- GUIツールでweb.xmlを表示するときのアイコン
servlet-name ◇ †
servlet-class or jsp-file ◇ †
init-param * †
- このServletに与えるパラメータ(ServletConfig?インタフェースからアクセスできる)
description * †
param-name †
- パラメータ名 (ServletConfig?#getInitParameter?(String name)の引数)
param-value †
- パラメータ(ServletConfig?#getInitParameter?(String name)の返値)
load-on-startup ? †
- 0以上の値を設定。
- J2EEコンテナ起動時に、この値が小さい順にインスタンス化される
- 設定しなければ、初めて呼ばれたときにインスタンス化される
run-as ? †
- このServletを実行する際の暗黙的なロール名。ロールのないクライアントはこのロールを使う。
security-role-ref * †
- <security-role>?で定義されたロール名(role-name)をこのServletでは(role-link)として扱う
description * †
role-name ◇ †
- <security-role>?で定義されたロール名(role-name)
role-link ? †
servlet-mapping * †
servlet-name ◇ †
url-pattern ◇ †
session-config * †
session-timeout ? †
extension †
mime-type †
welcome-file-list * †
- ファイルを指定せずにこのWEBアプリにアクセスしたときに返すファイル
welcome-file + †
error-page * †
- このWebアプリでエラーが起きたときに遷移するページ
error-code or exception-type ◇ †
- 500
- java.lang.NullPointerException? (完全修飾名)
location ◇ †
- JSP中のtaglib宣言で使用するURIと、実際のtldファイルを結びつけるモノ
- JSP
<%@ taglib uri="http://hondou.homedns.org/tags/snail.tld" prefix="snail"%>
- web.xml
<taglib>
<taglib-uri>/http://hondou.homedns.org/tags/snail.tld</taglib-uri>
<taglib-location>/WEB-INF/snail.tld</taglib-location>
</taglib>
- snail.tld
tab定義 (cf.[[クラッシックタグハンドラ>Java SJC-WC#classicTag]]
taglib-uri †
- tldファイルの論理名(名前として利用するだけなので、実際にそのURIにtldファイルが無くてもよい)
taglib-location or taglib-uri ◇ †
jsp-property-group * †
descirption * †
display-name * †
- GUIツールでweb.xmlを表示するときの表示名
icon * †
- GUIツールでweb.xmlを表示するときのアイコン
url-pattern * †
- この jsp-property-group を適用する URL (cf.URL指定法)
el-ignored * †
page-encoding * †
scriptiong-invalid * †
- スクリプトレット( <= abc > )を評価しない(デフォルトはfalse)
is-xml * †
- JSP XMLシンタックス#XMLSyntax?で記述された文書か?
include-prelude * †
- url-pattern で示したすべてのJSPに、ここで指定したJSPをヘッダとして挿入する
include-coda * †
- url-pattern で示したすべてのJSPに、ここで指定したJSPをフッタとして挿入する
security-constraint * †
display-name * †
- GUIツールでweb.xmlを表示するときの表示名
web-resource-collection + †
web-resource-name †
description * †
url-pattern + †
http-method * †
auth-constraint ? †
description * †
role-name * †
user-data-constraint ? †
description * †
transport-guarantee †
- アクセス方法
設定値 | アクセス方法 |
NONE | 通信の保証が不要な場合に指定する |
INTEGRAL | 通信の完全性の保証が必要(たいていのJ2EEコンテナではSSLに切り替える) |
CONFIDENTIAL | 通信の秘匿性の保証が必要(たいていのJ2EEコンテナではSSLに切り替える) |
login-config * †
- 現在の権限外のURLを見ようとしたときに、どのように認証を行うかを定義する。
- 認証済みのユーザのロールに対してどのような権限を与えるかは、<security-constraint>で設定する
auth-method ? †
設定値 | 認証方法 | 説明 |
BASIC | BASIC認証 | ブラウザから認証ダイアログが立ち上がる |
DIGEST | DIGEST認証 | BASIC認証を暗号化 |
FORM | FORM認証 | HTMLを使って認証を行う |
CLIENT_CERT | SSLを確立 | https通信を確立する。J2EEコンテナ固有の設定と、クライアントへの証明書の配布が必要 |
realm-name ? †
form-login-config ? †
form-login-page †
form-error-page †
- login.jspで、認証に失敗したときに呼ばれる。
- このJSPは、ダイアログを表示して、元の画面(ログインしようとしたURL)に戻ろうとする。
- ところが、認証が済んでいないので、元の画面(ログインしようとしたURL)を表示する前にlogin.jspが表示される。
- 実装はトリッキーだが、ユーザから見ると自然な画面遷移。
- ログイン画面で認証失敗のダイアログが表示されたように見える。
- ユーザ名・パスワードを入力し直すと、最初に表示しようとしたURLにきちんと遷移する。
security-role * †
description * †
role-name ◇ †
env-entry * †
- JNDIのjava:comp/env 以下に、ここで定義したエントリを追加する
description * †
env-entry-name †
env-entry-type †
env-entry-value ? †
ejb-ref * †
- EJBオブジェクトのこのWebアプリ内での別名を定義
- JNDIに"太郎"で登録されているSessionBean?を呼び出すとき
description * †
ejb-ref-name †
ejb-ref-type †
home †
remote †
ejb-link ? †
ejb-local-ref * †
description * †
ejb-ref-name †
ejb-ref-type †
local-home †
local †
ejb-link ? †
service-ref * †
description * †
display-name * †
icon * †
service-ref-name †
service-interface †
wsdl-file ? †
jaxrpc-mapping-file ? †
service-qname ? †
port-component-ref * †
handler * †
- J2EEコンテナが管理する資源へのアクセス(ex.DataSource?)
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/TestDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
- プログラム
Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/TestDB");
Connection conn = ds.getConnection();
Statement stmt = conn.createStatement();
ResultSet rst = stmt.executeQuery("delete from diary DY where DY.day
in select day from memory where presence = ○○○");
description * †
res-ref-name †
res-type †
res-auth †
res-sharing-scope ? †
resource-env-ref * †
description * †
resource-env-ref-name †
resource-env-ref-type †
- JMSオブジェクト(メッセージキュー)のこのWebアプリ内での別名を定義
description †
message-destination-ref-name ◇ †
message-destination-ref-type * †
message-destination-ref-usage ◇ †
message-destination-link ? †
message-destination * †
description * †
display-name * †
icon * †
message-destination-name ◇ †
local-encoding-mapping-list * †
local-encoding-mapping + †
locale ◇ †
encoding ◇ †
Java