Apcoordinator ユーザーズガイド
目次 前ページ次ページ

第3部 Webアプリケーションの開発> 第17章 APIを使ったプログラミング> 17.1 セション管理

17.1.7 セションの明示的な開始と破棄

Webcoordinatorでは、セションを明示的に開始または破棄することが可能です。

■アプリケーション起動時のセション自動開始設定

アプリケーション起動時にセションを自動的に開始するかどうかを初期化パラメタuji.session.manualControlで設定します。 セションを明示的に開始または破棄する場合は、初期化パラメタuji.session.manualControlにtrueを指定します。 初期化パラメタuji.session.manualControlの指定方法の詳細は、 初期化パラメタを参照してください。


    <context-param>
     <param-name>uji.session.manualControl</param-name>
     <param-value>true</param-value>
    </context-param>

■セション開始前または破棄後に表示する画面の作成

セション開始前または破棄後に表示する制御ページおよび入出力ページは次のように作成します。

・制御ページ

<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=shift_jis">
<%@ page contentType= "text/html; charset=shift_jis" %>
<%@ page session="false" %>
<%@ taglib uri="uji-taglib" prefix="uji" %>
<%@ page errorPage="errorPage.jsp" %>
</HEAD>
<BODY>

<uji:dispatch />

<uji:include pane="body" />
</BODY>
</HTML>
・入出力ページ

<%@ page contentType="text/html; charset=shift_jis" %>
<%@ page session="false" %>
<%@ taglib uri="uji-taglib" prefix="uji" %>
・・・・・・
<!-- uji:formタグを使用している場合 -->
<uji:form name="mainForm" verbs="ok" beanId="body" beanCls="sample.MyDataBean">
   ・・・・・・
</uji:form>

<!-- HTMLのFORMタグを使用している場合 -->
<form action="main.jsp">
   <input type="hidden" name="uji.bean" value="sample.MyDataBean">
   ・・・・・・
</form>

セション開始前または破棄後に表示する画面で使用可能なUJIタグ一覧

タグ種別タグ名機能
基本タグ uji:dispatch ビジネスクラスの呼び出し
uji:include 入出力ページの取り込み
uji:includedBody uji:includeタグと連携した入出力ページの出力
uji:useBean データBeanに対する名前付け
uji:getProperty データBeanのプロパティの値を画面に出力
uji:controlState セション管理
uji:controlSection 二重処理の防止
uji:resourceText リソースファイルに定義した文字列の出力
画面部品タグ uji:table データを表形式に展開(*)
uji:tableRenderer データを表形式に展開する場合の展開形を指定(*)
uji:tree ツリー構造のデータを展開(*)
uji:treeRenderer ツリー構造のデータを展開する場合の展開形を指定(*)
uji:list リスト形式のデータを展開(*)
uji:listRenderer リスト形式のデータを展開する場合の展開形を指定(*)
uji:switch 条件によって異なる画面を展開
uji:case 条件によって異なる画面を展開する場合の展開形を指定
uji:value カレントオブジェクトの値(*)
uji:children 画面部品タグの展開形式で下位の構造を展開(*)
クライアントスクリプトタグ uji:action HTMLのイベントに対して実行するJavaScriptの記述
uji:validate HTMLのイベントが発生した時の項目チェックとJavaScriptの実行
uji:form フォーム
uji:input クライアントスクリプトの利用(INPUTタグ相当)
uji:textarea クライアントスクリプトの利用(TEXTAREAタグ相当)
uji:select クライアントスクリプトの利用(SELECTタグ相当)
コンポーネントタグ uji:label ラベル
uji:borderLayout 上下左右に領域を設定するレイアウト
uji:borderLayoutRenderer uji:borderLayoutの各領域の内容の記述
uji:gridLayout 項目をグリッドに揃えるレイアウト
uji:gridLayoutRenderer uji:gridLayoutの各領域の内容の記述
uji:tabbedLayout タブで切り替え可能なレイアウト
uji:tabbedLayoutRenderer uji:tabbedLayoutRendererの各領域の内容の記述
(*)表やリストなどの繰り返しデータを画面に展開して表示する場合に使用します。 ただし、INPUTタグなどの入力項目を作成することはできません。以下に使用例を示します。

<uji:table bean="body" property="table">
    <uji:tableRenderer type="column">
        <TD bgcolor="#EEFFEE"><uji:value/></TD>
    </uji:tableRenderer>
    ....
</uji:table>

■セションの開始

セションを開始するには、HttpSessionProfileクラスのopenSessionメソッドを使用します。


    package sample;
    import com.fujitsu.uji.http.HttpSessionProfile;
    import com.fujitsu.uji.SessionStateException;

    public void someMethod(DispatchContext context, sample.MyDataBean dataBean) {
        ...
        context.setResponseBean("body", dataBean);

        HttpSessionProfile sp = (HttpSessionProfile)context.getSessionProfile();
        // セションを開始します。
        try {
            sp.openSession(context);
        } catch (SessionStateException e) {
            // openSessionメソッドで発生した例外
            ...
        }
    }

openSessionメソッドを呼び出すことにより、サーブレットコンテナが管理するセションの情報 (javax.servlet.http.HttpSession) が生成され、 セションクラスがセションスコープに格納されます。セションクラスは、セションが開始されるまでリクエストスコープに格納されています。

■セションの破棄

セションを破棄するには、HttpSessionProfileクラスのcloseSessionメソッドを使用します。


    package sample;
    import com.fujitsu.uji.http.HttpSessionProfile;
    import com.fujitsu.uji.SessionStateException;

    public void someMethod(DispatchContext context, sample.MyDataBean dataBean) {
        ...
        context.setResponseBean("body", dataBean);

        HttpSessionProfile sp = (HttpSessionProfile)context.getSessionProfile();
        // セションを破棄します。
        try {
            sp.closeSession(context);
        } catch (SessionStateException e) {
            // closeSessionメソッドで発生した例外
            ...
        }
    }

closeSessionメソッドを呼び出すことにより、サーブレットコンテナが管理するセションの情報 (javax.servlet.http.HttpSession) が破棄され、 セションスコープに格納されていたセションクラスがリクエストコープに格納されます。
注意
セションを明示的に開始または破棄する場合の注意事項は以下のとおりです。

目次 前ページ次ページ

All Rights Reserved, Copyright © 富士通株式会社 2000-2007