- PR -

IEとNNのセション管理

1
投稿者投稿内容
ume
ベテラン
会議室デビュー日: 2001/09/19
投稿数: 55
投稿日時: 2002-04-09 18:07
お世話になります。
Servletで開発しているのですが、HttpSessionについて教えてください。

1画面1クラスの分散型のシステムを作っています。
ひとつのパソコンの画面上に2つブラウザを立ちあげて実行した場合
IEだとそれぞれのブラウザでの展開にあわせてセションが2つできるのですが
NNだと1つのセションしか持たず、セションパラメータが置き換わってしまいます。
NNでも1ブラウザに1セション持たせる方法はないのでしょうか?
ご教授のほどよろしくお願いします。

ブラウザはIE5.5、NN4.75で開発しています。
miki
大ベテラン
会議室デビュー日: 2001/09/21
投稿数: 174
お住まい・勤務地: 東京都八王子市
投稿日時: 2002-04-10 12:01
> NNでも1ブラウザに1セション持たせる方法はないのでしょうか?

自前でセッションIDを作る方法しか知りません。本当はひとつしかないセッションに、自前のセッションIDをkeyにして(複数の)画面毎の情報を保持・取得するという方法です。

同様な方法として、J2EE Design Patternsという本に、次のようにして「ボタンの二度押し」を防ぐ方法が書いてあります。このステップ3の部分を置き換えて、画面ごとのセッション情報を取るようにすればよいと思います。

1) 画面生成サーブレットが動的にIDを生成しHTMLのhiddenタグに埋め込む
2) その画面から起動されたサーブレットのrequest属性からIDを取り出す
3) そのサーブレットはIDかすでに処理したものか否かを判別して二度目ならエラーにする



おがわ
大ベテラン
会議室デビュー日: 2001/08/01
投稿数: 199
お住まい・勤務地: 千葉県
投稿日時: 2002-04-10 15:38
> ひとつのパソコンの画面上に2つブラウザを立ちあげて実行した場合
> IEだとそれぞれのブラウザでの展開にあわせてセションが2つできるのですが
> NNだと1つのセションしか持たず、セションパラメータが置き換わってしまいます。
> NNでも1ブラウザに1セション持たせる方法はないのでしょうか?
>
ブラウザの持つCookieが、上記のように実装されているんです。
IEはウィンドウ単位でCookieを保存可能ですが、NNはアプリケーション単位で共有されます。

Cookieを利用せず、セッションIDをURLへRewriteしてやると解決できますが、
なりすましといったセキュリティ上の問題もあるため、あまりお薦めされていません。

ユーザ情報など外部に漏洩されては困る情報がセッションに含まれてさえいなければ、
セッションIDのURLへの上書きは、逆に検討してもいいかもしれません。
ume
ベテラン
会議室デビュー日: 2001/09/19
投稿数: 55
投稿日時: 2002-04-10 15:46
ご回答いただきありがとうございます。
とても勉強になりました。

謎の白覆面さんが
>Cookieを利用せず、セッションIDをURLへRewriteしてやると解決できますが、
と言われる方法は、URLのあとに?key=value&key=valueとパラメータを渡す方法の
ことだと理解してよいのでしょうか?

おがわ
大ベテラン
会議室デビュー日: 2001/08/01
投稿数: 199
お住まい・勤務地: 千葉県
投稿日時: 2002-04-10 18:37
> >Cookieを利用せず、セッションIDをURLへRewriteしてやると解決できますが、
> と言われる方法は、URLのあとに?key=value&key=valueとパラメータを渡す方法の
> ことだと理解してよいのでしょうか?
Servlet API にある 「URL Rewriting」 という機能のことです。

[ JavaServlet Tutorial - Session Tracking ( Sun ) ]
http://java.sun.com/docs/books/tutorial/servlets/client-state/session-tracking.html
1

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