- PR -

セッションタイムアウト時の処理について

1
投稿者投稿内容
わんこ
常連さん
会議室デビュー日: 2003/04/30
投稿数: 46
投稿日時: 2003-10-10 14:13
現在Struts1.0.2を用いてWEBアプリケーションの構築を行っています。

セッションタイムアウト時にエラー画面に遷移させる、という処理を追加しようと思っています。
そこで一つおききしたいのですが、どこでどのような処理を行うのが最適(一般的)なのでしょうか?

以前参加していたプロジェクトでは、アクションクラスでセッションに格納済みのオブジェクトがnullだったら・・・
みないなことをしていましたがどうなんでしょうか?

よろしくお願いします。



[ メッセージ編集済み 編集者: わんこ 編集日時 2003-10-10 14:14 ]
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2003-10-10 19:05
いろいろと実装方法がありそうですが、セッションが生成されているべきパスでセッションがタイムアウトしているかどうかは、

・HttpServletRequest.getSession(false) で null が返ってくるか
・HttpServletRequest.getSession(true).isNew() で true が返ってくるか
といったところでしょうか。
それを Filter/ActionServlet(の継承クラス)/アクションクラス のいずれかで検証するのが良いかと思います。
わんこ
常連さん
会議室デビュー日: 2003/04/30
投稿数: 46
投稿日時: 2003-10-14 13:09
インギさん、ありがとうございます。

検証するクラスは、Actionを拡張したクラスでやろうと思っていたので
そこに処理を追加してみました。

1.HttpServletRequest.getSession(true).isNew() はOKでした。

2.HttpServletRequest.getSession(false) で null が帰ってきません。

1ができたので、あとはパスの判定を付け加えてみます。
1でやるとしても2が気になります・・・

とにかくありがとうございました。
わんこ
常連さん
会議室デビュー日: 2003/04/30
投稿数: 46
投稿日時: 2003-10-14 14:03
何度もすみません。
パスの判定についてお聞きしたい事があります。
トップページ以外は全てセッションタイムアウト時の処理を行いたいと思っています。

・Action拡張クラスのロジック内で該当パスを直接書く。
・ActionMappingの拡張クラスにプロパティを追加してstruts-config.xmlでフラグを設定する。(そのフラグをAction拡張クラスで判定する)

のどちらにしようか悩んでいます。
やっぱり2番目かな・・・と傾きかけてます。
アドバイスお願いします
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2003-10-14 14:15
>2.HttpServletRequest.getSession(false) で null が帰ってきません。
たぶん、Strutsのどこかで既に getSession() が呼ばれてるのでしょうね。

>パスの判定についてお聞きしたい事があります。
>トップページ以外は全てセッションタイムアウト時の処理を行いたいと思っています。
Strutsにこだわらずに、Filter で処理してみてはいかがでしょうか?
アプリケーション(やActionクラス)の中でタイムアウトに関係する処理を盛り込む必要がなりますし、万が一 JSP が直接呼ばれてもタイムアウト画面を出せますよ。
・[WebLogic8.1]-[フィルタ]
http://edocs.beasys.co.jp/e-docs/wls/docs81/webapp/filters.html
taku
ぬし
会議室デビュー日: 2002/11/12
投稿数: 918
お住まい・勤務地: 墨田区→中野区
投稿日時: 2003-10-14 14:25
引用:

インギさんの書き込み (2003-10-14 14:15) より:
>2.HttpServletRequest.getSession(false) で null が帰ってきません。
たぶん、Strutsのどこかで既に getSession() が呼ばれてるのでしょうね。


これってJSPのsession属性のデフォルトがtrueだからではないでしょうか?
わんこ
常連さん
会議室デビュー日: 2003/04/30
投稿数: 46
投稿日時: 2003-10-14 14:37
インギさん、何度もありがとうございます。

>たぶん、Strutsのどこかで既に getSession() が呼ばれてるのでしょうね。

なるほど!!そういわれるとそうですね


>Strutsにこだわらずに、Filter で処理してみてはいかがでしょうか?

そうですね。
今回のプロジェクトでは、Strutsを拡張したものが既にあり
他の似たような処理もAction拡張クラス(これを個々のActionクラスが継承する)に書いたのでそこに付け足そうかな・・・と思ったのでした。JSPが直接呼ばれた場合の処理も実装済みです。

Filterで、この処理はやったことがないので、URLなどを参考にして、
次回などで使用できるようにしたいです

インギさん、ありがとうざいました



[ メッセージ編集済み 編集者: わんこ 編集日時 2003-10-14 14:39 ]
1

スキルアップ/キャリアアップ(JOB@IT)