• 検索結果がありません。

JSP 2.0,2.1 JSP ページ ISO-8859-1

2.22  URI のデコード機能

URI のデコード機能は,Web サーバ連携,およびインプロセス HTTP サーバで利用できます。

この節では,URI のデコード機能について説明します。

この節の構成を次の表に示します。

表 2‒66 この節の構成(URI のデコード機能)

分類 タイトル 参照先

解説 URI のデコード機能の概要 2.22.1

設定 実行環境での設定(J2EE サーバの設定) 2.22.2

注意事項 URI のデコード機能を使用する場合の注意事項 2.22.3

注 「実装」および「運用」について,この機能固有の説明はありません。

2.22.1 URI のデコード機能の概要

URI のデコード機能を使用すると,アプリケーションサーバでは,リクエスト URI のサーブレットパスお よび追加のパス情報に含まれる URL エンコードされた文字列がデコードされます。ただし,コンテキスト パスはデコードされません。

デコードされた URI を使用しない Web アプリケーションを実行するときは,URI のデコード機能を使用 しないように設定するか,Web アプリケーション側で対応する必要があります。

URI のデコード機能の使用時に影響がある Servlet API,デコードされた文字列を使用する機能,デコード 時に使用される文字コード,および文字列のデコードと正規化の実行順序を次に記述します。

(1) URI のデコード機能の使用時に影響がある Servlet API

URI のデコード機能を使用する場合,javax.servlet.http.HttpServletRequest インタフェースの次のメ ソッドでは,デコードされた URI が戻り値となります。

• getPathInfo メソッド

• getPathTranslated メソッド

• getServletPath メソッド

ただし,getRequestURI メソッドおよび getRequestURL メソッドでは,デコードされていない URL が 戻り値となります。

(2) デコードされた文字列を使用する機能

URI のデコード機能を使用する場合,次に示すマッチング処理で,デコードされた文字列が使用されます。

• サーブレットおよび JSP の URL パターンとのマッチング

• デフォルトマッピングとのマッチング

• 静的コンテンツとのマッチング

• フィルタの URL パターンとのマッチング

• web.xml の<error-page>タグ,または JSP の page ディレクティブの errPage 属性で指定するエラー ページとのマッチング

• アクセスを制限する URL パターンとのマッチング

• ログイン認証の URL 判定

• リクエストのフォワードおよびインクルード

• HTTP レスポンス圧縮フィルタの URL パターンとのマッチング

• URL グループ単位の同時実行スレッド数制御の URL パターンとのマッチング

ただし,コンテキストパスはデコードされないで,元の文字列のまま扱われるため,コンテキストルートと 一致しない場合は「404 Not Found」が戻り値となります。

また,アプリケーションサーバの次の機能では,デコード後の文字列でのマッチングは行われません。

• インプロセス HTTP サーバのエラーページのカスタマイズ機能

• インプロセス HTTP サーバのリダイレクトによるリクエストの振り分け機能

(3) デコード時に使用される文字コード

URI のデコード機能を使用する場合,デコード時に使用される文字コードは UTF-8 です。

(4) 文字列のデコードと正規化の実行順序

クライアントから送信されたリクエスト URI で,マッチングに利用される URL は,デコードされたあと で正規化されます。

2.22.2 実行環境での設定(J2EE サーバの設定)

URI のデコード機能を使用する場合,J2EE サーバの設定が必要です。

J2EE サーバの設定は,簡易構築定義ファイルで実施します。URI のデコード機能の定義は,簡易構築定義 ファイルの論理 J2EE サーバ(j2ee-server)の<configuration>タグ内の

webserver.http.request.uri_decode.enabled に指定します。このパラメタでは,URI のデコード機能を 使用するかどうかを指定します。

簡易構築定義ファイル,および指定するパラメタの詳細については,マニュアル「アプリケーションサー バ リファレンス 定義編(サーバ定義)」の「4.6 簡易構築定義ファイル」を参照してください。

2.22.3 URI のデコード機能を使用する場合の注意事項

ここでは,URI のデコード機能を使用する場合の注意事項について説明します。

(1) 文字列のデコードと正規化の実行順序

サーブレットパスと URL パターンのマッチングでは,デコードされたあとで正規化された URI が使用さ れます。

コンテキストパスとコンテキストルートのマッチングでは,デコードされないで正規化された URI が使用 されます。

(2) リクエストの属性

フォワード時またはインクルード時にリクエストに追加される属性にも,デコードされた値が格納されるも のがあります。フォワード時またはインクルード時にリクエストに設定される各属性について,格納される 値がデコードされるかどうかを次の表に示します。

処理 属性 格納される値のデコードの実行

フォワー ド

javax.servlet.forward.request_uri × javax.servlet.forward.context_path × javax.servlet.forward.servlet_path ○ javax.servlet.forward.path_info ○ javax.servlet.forward.query_string × インク

ルード

javax.servlet.include.request_uri × javax.servlet.include.context_path × javax.servlet.include.servlet_path ○ javax.servlet.include.path_info ○ javax.servlet.include.query_string ×

(凡例)

○:デコードされる

×:デコードされない

各属性および各属性に格納される値については,サーブレット仕様書を参照してください。

(3) HTTP セッションの引き継ぎ

コンテキストパスはデコードされないで,元の文字列のまま扱われるため,HTTP セッションは引き継が れます。

Outline

関連したドキュメント