セッションをトラッキングする際に URL の再書き込みを使用するアプリケーションは、
特定のプログラミング・ガイドラインを順守する必要があります。
アプリケーション開発者は、次のことを行う必要があります。
- URL をエンコードするサーブレットをプログラミングする
- アプリケーションへのエントリー・ポイントとしてサーブレットまた
は JavaServer Pages (JSP) ファイルを用意する。
URL 再書き込みを使用するためには、セッション管理機能で URL 再書き込みを使用可能にすることも必要です。
注: クライアントが Cookies を受け入れることができない場合があります。
したがって、Cookies をセッション・トラッキング・メカニズムとして使用することはできません。
その代わりに、アプリケーションは、URL 再書き込みを使用することができます。
URL をエンコードするためにセッション・サーブレットをプログラミングする
サ
ーブレットが URL をブラウザーに戻すか、それらをリダイレクトするかによ
って、encodeURL メソッドまたは encodeRedirectURL メソッドのどちらかをサーブレット・コードに組み込みます。
現在のサーブレット・コードの中で置き換えるべきものを示す例は、次のとおりです。
ブラウザーに戻るように URL の再書き込みを行う
現在、次のステートメントがあるとします。
out.println("<a href=¥"/store/catalog¥">catalog<a>");
URL を出力ストリームに送信する前に encodeURL メソッドを呼び出すよう、
サーブレットを変更します。
out.println("<a href=¥"");
out.println(response.encodeURL ("/store/catalog"));
out.println("¥">catalog</a>");
リダイレクトするように URL を再書き込みする
現在、次のステートメントがあるとします。
response.sendRedirect ("http://myhost/store/catalog");
URL を出力ストリームに送信する前に encodeRedirectURL メソッドを呼び出すよう、
サーブレットを変更します。
response.sendRedirect (response.encodeRedirectURL ("http://myhost/store/catalog"));
encodeURL メソッドおよび encodeRedirectURL メソッドは
HttpServletResponse オブジェクトの一部です。これらの呼び出しは、URL をエンコードする前に URL の再書き込みが構成されているかどうかを調べます。
再書き込みが構成されていない場合、呼び出しはオリジナルの URL を戻します。
Cookies と URL の再書き込みが両方とも使用可能になっており、
response.encodeURL メソッドまたは encodeRedirectURL メソッドが呼び出されると、
たとえ HTTP 要求を行なっているブラウザーがセッション Cookie を処理したとしても、
URL がエンコードされます。
セッション・サポートを構成して、プロトコル・スイッチの再指定を使用可能にすることもできます。
このオプションが使用可能にされていると、
製品は HTTP プロトコルと HTTPS プロトコルの切り替え用のセッション ID
を使用して URL をエンコードします。
エントリー・ポイントとしてサーブレットまたは JSP ファイルを提供する
アプリケーションへのエントリー・ポイント (提示されている初期画面など)
は、セッションを使用する必要がない場合があります。
ただし、アプリケーションが、一般的に、セッション・サポートを必要としている (つまり、サーブレットなど、
アプリケーションの一部がセッション・サポートを必要としている) 場合、セッションが作成された後で、
セッション・サポートを必要とするサーブレット (または他のアプリケーション・コンポーネント) 向けに、
セッション ID を永続化するためにすべての URL がエンコードされます。
次の例は、Java コードを JSP ファイル内に組み込む方法を示しています。
<%
response.encodeURL ("/store/catalog");
%>