Apcoordinator ユーザーズガイド |
目次 |
第3部 Webアプリケーションの開発 | > 第16章 APIを使ったプログラミング | > 16.1 セション管理 |
uji.verb
はコマンドを直接指定します。
<BODY> <% if(session.isNew() && request.getParameter("uji.verb") == null) { %> <jsp:forward page="main.jsp?uji.verb=login" /> <% } %> <uji:dispatch />
uji:useBean
タグで指定したデータBeanは削除されます。
アプリケーションクラスのnotifyBeanLostメソッドはこの状態を検出します。
notifyBeanLostメソッドの復帰値は、セション切断時のコマンドを差し替えます。
この場合、Beanなし、コマンド名timeoutに対応するビジネスクラスのメソッドが呼ばれます。コマンドマップでメソッドに対応付けます。
package sample; public class SampleApplication extends com.fujitsu.uji.ApplicationProfile { public String notifyBeanLost(String id) { return("timeout"); } }
ビジネスクラスのメソッドでは画面構成を決めるなどの処理をします。
;timeout=sample.SampleHandler.timeout
notifyBeanLostメソッドを利用する場合は、入出力ページを作成する際に以下に注意してください。
public class SampleHandler extends com.fujitsu.uji.GenericHandler { public void timeout(DispatchContext context) { // タイムアウトの処理を記述 ... } }
<uji:useBean id="body" cls="sample.BodyBean" request="true" /> <FORM method="post"> <INPUT name="uji.id" type="hidden" value="body"> .... </FORM>
uji:useBean
タグで指定したデータBeanは削除されても再度生成できるように、uji.bean
パラメタを追加します。
セションのプリプロセスでは、フラグ等を設定して、現在の状態が新規のセションかどうか判定します。
<INPUT name="uji.id" type="hidden" value="body"> <INPUT name="uji.bean" type="hidden" value="sample.SampleBean">
ログイン処理が正常に実行された後、再処理をします。
package sample; public class SampleSession extends com.fujitsu.uji.http.HttpSessionProfile implements com.fujitsu.uji.Preprocessor { protected boolean loginFlag = false; protected DispatchContext savedContext; int preprocess(DispatchContext context) { if(!loginFlag) { // 初回でなければコンテキストを保存 if(context.getRequestBean() != null) savedContext = context; // context.setResponseBeanで画面を構成 .... return Preprocessor.SKIP_ALL; } return Preprocessor.EVAL; } }
public void login(DispatchContext context, LoginBean dataBean) { // ログイン実行 .... // 正常の場合 SampleSession sp = (SampleSession)context.getSessionProfile(); sp.loginFlag = true; if(sp.savedContext != null) { // コンテキストが保存されている場合、再実行 Dispatcher.redispatch(context, sp.savedContext); sp.savedContext = null; } else { // 初期画面の処理 .... } }
目次 |