セション管理にURLリライティングを使用する場合は、アプリケーションを次のように作成します。
ユーザー定義のセションクラスを作成する
ユーザー定義のセションクラスをcom.fujitsu.uji.http.HttpControlStateProfileクラスを継承して作成します。また、getSessionMode() メソッドをオーバライドしてURLREWRITINGを返却するようにします。このメソッドは、セション管理にCookieとURLリライティングのどちらを使うのかを選択するものです。
public class SampleSession extends com.fujitsu.uji.http.HttpControlStateProfile { public int getSessionMode() { return HttpControlStateProfile.URLREWRITING; } }
なお、ユーザー定義のセションクラスを有効にするために、以下の作業が必要になります。具体的な方法は“3.5 ファクトリクラス”を参照してください。
ファクトリクラスを作成し、ユーザー定義セションクラスのオブジェクトが作成されるようにします。
初期化パラメタでファクトリクラスのクラス名を指定します。Webアプリケーションの初期化パラメタはWebアプリケーション環境定義ファイル(web.xml)に記述します。
フォームにuji:controlStateタグを追加する
すべてのフォームにuji:controlStateタグを追加します。
<uji:form ...>
<uji:controlState />
...
</uji:form>
参考
HTMLのAタグ、FORMタグ、FRAMEタグなどを使用し、そのアトリビュートでリクエスト送信先のURLを記述している場合、そのURLをリライティングするスクリプトレットを追加する必要があります。uji:form、uji:anchor、uji:frameで指定したURLについては、この作業は不要です。
URLをリライティングする処理はサーブレットのAPIを使用して実現します。javax.servlet.http.HttpServletResponseインターフェイスのencodeURLを次のように使用します。
リライティング処理追加前のAタグ
<A HREF="main.jsp?uji.verb=cancel&uji.id=body">キャンセル</A>
リライティング処理追加後のAタグ
<A HREF="<%=response.encodeURL("main.jsp?uji.verb=cancel&uji.id=body")%>">キャンセル</A>
変数responseはJSPで暗黙的に定義されている変数で、HttpServletResponseのオブジェクトです。このオブジェクトのencodeURLメソッドでURLリライティングを実行します。
関連項目