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

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

<この項の構成>
(1) 文字列のデコードと正規化の実行順序
(2) リクエストの属性
(3) HTTPセッションの引き継ぎ

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