度々の質問で申し訳ないです…。
「セッション管理」がどうしてもよく分かりません。
書籍やWeb上でいろんな説明を読んで頭では理解したつもりなんですが
実際使う段になるとつまづいてしまいます。
そこで質問です。
html → Servlret1 → JSP1 → Servlet1 → JSP2 → JSP3
このような遷移の中でセッション管理を行いたいと思っています。
今、JSP2までは無事にセッションオブジェクトに保存されたデータを
参照することができていますが、JSP2からJSP3に移るときに
nullが渡されてしまうのです。
一度、Servlet1 へ制御を戻さなければだめなのでしょうか?
具体的なコードを以下に掲載します。
よろしくお願いします。
========= Servlet1 でセッション開始
//セッションを得る
HttpSession thisSession = req.getSession(true);
//セッションに保存
req.getSession(false).setAttribute("Login","true");
========= JSP2 で受け取る
/* ここではちゃんと"true"が返ってきます。 */
//セッションオブジェクトから取り出す
String login = (String)request.getSession(false).getAttribute("Login");
========= JSP3 で受け取る
/* ここで null が帰ってきてしまいます。
String login = (String)request.getSession(false).getAttribute("Login");
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
No2の回答補足について。
間違っちゃいないと思います。
それでも可能なはずです。
formのアクションで飛ばす場合、他の方法だと、
action="..."で指定するアドレスの末尾に、セッションIDを
附加するのなんかがよく使われるんじゃないでしょうか。
http://....target.jsp;jsessionid=xxxx だったっけ。
最近使ってないから正確に覚えてないですが。
この回答への補足
http://hostname/servlet/MyServlet$sessionid=xxxx …
とかいうやつですね。
セッションIDが丸見えになってセキュリティ上問題があるからって、
クッキーに保存するんでしたっけ??
今一番頭が混乱してるのが「セッション」なので、これから
まだまだ勉強します。なかなか奥が深いです・・・。
No.2
- 回答日時:
request.setAttribute(...)
したうえで、
<jsp:forward page="..." />
すれば受け渡しできます。
この回答への補足
ありがとうございます。
それは、文字列とか画像とかをクリックして次のページへ移動…
ってしたいときには使えないのですか?
結局、JSP2で<input type="submit" > を使って、ボタンを押したら
一度Servlet1に制御を移して、それからJSP3にforwardっていう
やり方にしてしまいました。
セッション管理は、<jsp:useBean />を使う方法に挑戦してみました。
あまりよく分かってないかもしれませんが、、、
簡単に言うと、値を受け取って変数に代入するメソッド(setHoge)と、
代入された値を返すメソッド(getHoge)を持つHoge.classを作って、
JSPで
<jsp:useBean id="hoge" scope="session" class="Hoge" />
と記述してから
hoge.setHoge("aaa");
とか
String Str = hoge.getHoge(); //"aaa"が返って来る
という使い方をする…ので合ってますか??
今のところ、これでうまくいってるのですが、
この方法が合ってるのかどうかがよく分からない状態です…。
No.1
- 回答日時:
JSP2からJSP3に遷移する時に、ちゃんとリクエストをforwardする
コーディングをしていないのじゃないでしょーか?
(Servlet1→JSP2へのforwardと同じ手順が必要です。
これしないと、セッションが切れます。)
そもそもJSPに対しては、属性データをJavaBeansに詰め込んで
jsp:useBeanタグでscore="session"を指定して取り出すのが
今時の定石かも。お試しあれ。
参考URL:http://www02.u-page.so-net.ne.jp/qa2/masa_o/tsjs …
この回答への補足
JSP2 → JSP3 の移動は、
"<a href=\"http://.../JSP3.jsp?id=" + userid + "\">■</a>"
こんな風にしちゃってるんですけど…。
「■」にJSP3.jspのリンクを貼っちゃってる、って言っていいのかな?
これじゃ、requestがforwardされないってことですね?
Tiny Samplesは読んでいたのですけど、どうにも理解できなくて…。
どこかで同じような推奨(jsp:useBeanを使うべし)がされていたのを見ましたが、
やはりこれが定石ですか。挑戦してみようかな…。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
aタグによる複数リンクを別セッ...
-
グローバルIPアドレスの変更タ...
-
JSPで、sessionのタイムアウト...
-
javascriptでセッションの削除...
-
セッションオブジェクトの使い...
-
HTMLのSELECTタグの使い方、JSP...
-
javascriptでセッションを取得
-
腕時計の時報をならないように...
-
ボタンが活性化の場合とは、ボ...
-
【JavaScriptわからない】1クリ...
-
ServletからServletへの値渡し
-
アドレスバーに引数を表示させ...
-
[VB6]画像切り取り
-
VB6 開発環境のエディタに行...
-
このadidasの腕時計の時刻の設...
-
フォルダ改行
-
javascriptでローカルフォルダ...
-
漏電遮断器の黄色ボタンと白色...
-
三菱GOTの画面切り替えについて
-
window.openについて
マンスリーランキングこのカテゴリの人気マンスリー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変数名の取得
-
ブラウザバック禁止
-
セッション維持について
-
カスタムタグを使用してリクエ...
-
セッションの情報の消去について
おすすめ情報