6.18.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セッションは引き継がれます。