Ajaxフレームワーク ユーザーズガイド |
目次
索引
![]() ![]() |
第3章 通信フレームワーク | > 3.6 リクエスト送信時のURLについて |
Ajaxフレームワークを利用した通信、および画面部品内での通信において、URLリライティングを使用する場合は、動作定義にセションIDを設定します。
URLリライティングは、Cookieによるセション管理よりも、セションIDが搾取される危険性が高くなります。できる限り、Cookieによるセション管理を行ってください。URLリライティングを使用しない場合は、Cookieによるセション管理となります。
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を利用する場合は、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は、以下の項目でURLに付加されます。
以下に示すHTMLタグによって記述されたリソースの取得では、Ajaxフレームワークで設定されたセションIDは付加されません。
アプリケーションで付加する必要があります。
以下のAPIを利用すると、任意のURLに対して、動作定義に設定されたセションIDを付加することができます。
JavaScript API |
説明 |
---|---|
RCF.encodeURL(String url) |
パラメタで指定したURLに、RCF_configオブジェクトのjsessionidで指定されたセションIDが付加されて返されます。 パラメタの設定値に異常がある場合は、エラーメッセージ(RCF20008)が出力されます。 |
目次
索引
![]() ![]() |