お世話になります。
ログイン画面(html)→S1→TOP画面(JSP-Frame)→S2→各メニューへ(JSP)の流れのシステムがあります。S1/S2はサーブレット(クラス)です。基本的にログイン画面以外の画面については子画面となっておりウィンドウを新しく生成していきます。
ブラウザ固有の処理、ブラウザメニューからの選択やキー押下などによる各画面間のセッションを管理したいのですが、ここの質問履歴や参考サイトを見てもイマイチ把握できません。
IEのショートカット等ブラウザに依存する部分を使われると対処のしようが無い気もします。(100%対処できれば。。。)
システム的にファンクションキー等の操作を禁止(Javascript等)するくらいしか思いつきません。
例として
1.ブラウザのメニューからファイル-新規作成-ウィンドウで新規に画面が開いたとき、ページの有効期限切れの警告画面になるんですが、そこで更新(F5キー押下)で元の画面(本来は出てはいけない画面)になります。
2.URL直打ちやコピーでも普通に画面が表示されます。(これも本来出てはいけない画面)
上記2つの問題に関して、何か対処法はあるでしょうか?
2.に関しては単純にNULLの判定を入れるだけでOKなんでしょうか?
あと、ふと疑問に思ったんですが、現在開発しているシステムでは、セッション系を一つのBeans(クラス)にしてセッション管理を行っているんですが、Javaでは一度生成した場合、半永久(意図的に削除やTimeoutを除く)でデータを持つことができますよね?
JSPに直接セッションのコードを書き込む場合とBeansとしてもつ場合の違いってありませんか?
前に携わったシステム開発では、JSP側で管理をしてたもので、どうもBeansにセッション情報を持たすことに、???なんですが・・・。
以上、よろしくお願いします。
No.1
- 回答日時:
1.についてですがセッションはctrl+nやタブブラウザで別ウインドウで開くといった、セッションを保持したまま別ウィンドウを開く事には対処できません。
2.についてですが色々やり方はあると思いますが、単純にセッションの判定後NULLだったらLocationでindexに飛ばす等でいいのではないでしょうか?
回答、ありがとうございます。
>セッションを保持したまま別ウィンドウを開く事には対処できません。
つまりセッション管理では、別ウィンドウまでは無理ってことですか?でもセッションってそういうことも含めて管理されるのでは?
>セッションの判定後NULLだったら
単純にNULL判定だけでは、駄目ですね。
No.2
- 回答日時:
1.について
他の方もおっしゃってる通り、Servletの標準では対応していませんので、独自に実装する必要があります。
よくある簡単な対処方法としては、FORMのHIDDEN項目に毎回変化するランダムな値を生成しておき、次にサーブレットが呼ばれた時にその値を判断し以前生成した値かをチェックします。そして次はまた異なる値をHIDDENに入れておくという手があります。
No.3ベストアンサー
- 回答日時:
1について
F5をおすと直前のリクエストが再送信されたことになるのでしょうがないですね。
ここは運用で回避ということになるのでしょうか...
他の人の意見もきいてみたいっす。
2について
URL直打ちで画面が表示されてしまうのは、
セッション情報をみていないからでしょう。
null判定というのはセッションがnullかどうかでは、
別のWindowが生きている状態で直打ちされるとセッションが生きたままになっているので、
セッションがnull+αの判定が必要です。
ふと思ったことについて
JSPでセッションやらなんやらを管理すると
JSPが画面以外の情報をもつことになり、
現在の風潮では好ましくないという感じです。
JSPは画面情報のみに注力するほうがよろしいです。
回答、ありがとうございます。
1.について:そうなんですか?
それを管理するのがセッションの役目だと思ってたんですが。。。
>セッションがnull+αの判定
+αとは具体的にどのような処理を追加すれば。。。
下ででているランダム値とかですかね?
JSPは基本的に画面情報しか持たせないんですか?
普通に画面情報以外も待たせてます、ねえ。。。(笑)
参考になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
グローバルIPアドレスの変更タ...
-
sessionスコープとapplication...
-
ASP Session変数名の取得
-
リッチクライアントのセッション
-
MySQL・Tomcat・JSP 何度もSub...
-
setAttribute getAttribute 配...
-
JSPでsession変数が勝手に書き...
-
javascriptでセッションを取得
-
JSPで、sessionのタイムアウト...
-
ボタンが活性化の場合とは、ボ...
-
フォーム上で押されたボタンに...
-
C言語で今まで表示していた画面...
-
リクエストに応じたselectedの...
-
フォームで同じ複数のnameで違...
-
VB.NET DataReaderが開かれている
-
jspからServletを呼び、元のjsp...
-
VC++にて、コンソールを二画面表示
-
動的に作成したラジオボタンの...
-
CGI(Perl)のメッセージボックス...
-
ActiveWorkbook.Pathの一つ下の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
javascriptでセッションを取得
-
グローバルIPアドレスの変更タ...
-
setAttribute getAttribute 配...
-
エラーページ遷移後に入力値を残す
-
JSPでsession変数が勝手に書き...
-
ASP.NETのGlobal.asaxについて
-
MySQL・Tomcat・JSP 何度もSub...
-
aタグによる複数リンクを別セッ...
-
javascriptでセッションの削除...
-
セッションIDの桁数
-
sessionスコープとapplication...
-
GoogleChrome閉じるたびにアン...
-
jsessionidの有効期限を延長す...
-
HTMLのSELECTタグの使い方、JSP...
-
ターミナルサービスでクライア...
-
ASP Session変数名の取得
-
ブラウザバック禁止
-
セッション維持について
-
カスタムタグを使用してリクエ...
-
セッションの情報の消去について
おすすめ情報