ページの先頭行へ戻る
 Apcoordinatorユーザーズガイド

F.4.6 URLリライティングを使用したい

セション管理に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 ファクトリクラス”を参照してください。

フォームに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リライティングを実行します。

関連項目