Ajaxフレームワーク ユーザーズガイド
目次 索引 前ページ次ページ

第3章 通信フレームワーク> 3.6 リクエスト送信時のURLについて

3.6.2 URLリライティング

Ajaxフレームワークを利用した通信、および画面部品内での通信において、URLリライティングを使用する場合は、動作定義にセションIDを設定します。


URLリライティングは、Cookieによるセション管理よりも、セションIDが搾取される危険性が高くなります。できる限り、Cookieによるセション管理を行ってください。URLリライティングを使用しない場合は、Cookieによるセション管理となります。

■セションIDを付加する方法

URLに付加するセションIDは、Ajaxフレームワークの動作定義に追加することによって、設定することができます。

以下に、ApcoordinatorのデータBeanに格納されたセションIDを取得し、Ajaxフレームワークの動作定義に設定する例を示します。
この例では、ajaxurl.AjaxURLBeanクラスに定義されているjsessionidプロパティに、セションIDが格納されているものとします。

<%-- uji:useBeanの定義(データBeanを利用してセションIDを設定) --%>
<uji:useBean id="body" request="true" cls="ajaxurl.AjaxURLBean" />

<script type="text/javascript" charset="UTF-8" src="rcf_config.js"></script>

<script type="text/javascript">
//<![CDATA[
  // Ajaxフレームワークの動作定義にセションIDを設定
  RCF_config.jsessionid = "<uji:getProperty bean='body' property='jsessionid' />";
//]]>
</script>

<script type="text/javascript" src="acf/file/rcf/rcf.js"></script>

RCF_configオブジェクトのjsessionidプロパティについては、“Ajaxフレームワークの動作定義”を参照してください。


セションIDの設定は、Ajaxフレームワークの初期化処理(rcf.js)よりも先に記述しなければなりません。

なお、jsessionidに設定するセションIDは、サーブレットのHttpSessionクラスから取得することができます。以下に、ApcoordinatorのビジネスクラスでセションIDを取得する例を示します。

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import com.fujitsu.uji.http.HttpDispatchContext;

  (省略)

// Apcoordinatorが最初に呼ばれたときにセションIDを取得する例
public void startup(DispatchContext context) {
  HttpServletRequest request = ((HttpDispatchContext)context).getServletRequest();
  HttpSession session = request.getSession();
  String id = session.getId();
  (省略)

}

ApcoordinatorのビジネスクラスでセションIDを取得する場合は、Ajaxフレームワークを利用している画面に遷移する直前のビジネスメソッドで取得することができます。取得したセションIDは、画面遷移に使用しているデータBeanに格納して利用してください。

■ApcoordinatorのURLリライティング機能を使用する方法

Apcoordinatorを利用する場合は、ApcoordinatorのURLリライティング機能も使用する必要があります。
ApcoordinatorのURLリライティング機能を使用するには、com.fujitsu.uji.http.HttpControlStateProfileクラスを継承して作成したセションクラスで、getSessionMode()メソッドをオーバーライドして、HttpControlStateProfile.URLREWRITINGを返却するようにします。詳細は、“Apcoordinator ユーザーズガイド”を参照してください。
以下に記述例を示します。

import com.fujitsu.uji.http.HttpControlStateProfile;

public class Session extends HttpControlStateProfile {
  public Session() {
  }

  public int getSessionMode() {
    return HttpControlStateProfile.URLREWRITING;
  }

}

■セションIDを利用する項目

動作定義に設定されたセションIDは、以下の項目でURLに付加されます。


以下に示すHTMLタグによって記述されたリソースの取得では、Ajaxフレームワークで設定されたセションIDは付加されません。
アプリケーションで付加する必要があります。

■JavaScript APIによって任意のURLにセションIDを付加する方法

以下のAPIを利用すると、任意のURLに対して、動作定義に設定されたセションIDを付加することができます。

JavaScript API

説明

RCF.encodeURL(String url)

パラメタで指定したURLに、RCF_configオブジェクトのjsessionidで指定されたセションIDが付加されて返されます。
RCF_configオブジェクトのjsessionidが設定されていない場合は、パラメタで指定したURLがそのまま返されます。
返却されるURLは、以下のような形式となります。
url;jsessionid=123ABC

パラメタの設定値に異常がある場合は、エラーメッセージ(RCF20008)が出力されます。


目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2007