OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
締切り
済み

セッション管理

  • すぐに回答を!
  • 質問No.230827
  • 閲覧数180
  • ありがとう数0
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 75% (21/28)

度々の質問で申し訳ないです…。
「セッション管理」がどうしてもよく分かりません。
書籍や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");
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全3件)

  • 回答No.1
レベル9

ベストアンサー率 46% (30/65)

JSP2からJSP3に遷移する時に、ちゃんとリクエストをforwardする コーディングをしていないのじゃないでしょーか? (Servlet1→JSP2へのforwardと同じ手順が必要です。  これしないと、セッションが切れます。) そもそもJSPに対しては、属性データをJavaBeansに詰め込んで jsp:useBeanタグでscore="session"を指定して取り ...続きを読む
JSP2からJSP3に遷移する時に、ちゃんとリクエストをforwardする
コーディングをしていないのじゃないでしょーか?
(Servlet1→JSP2へのforwardと同じ手順が必要です。
 これしないと、セッションが切れます。)
そもそもJSPに対しては、属性データをJavaBeansに詰め込んで
jsp:useBeanタグでscore="session"を指定して取り出すのが
今時の定石かも。お試しあれ。
補足コメント
pinky23

お礼率 75% (21/28)

JSP2 → JSP3 の移動は、
"<a href=\"http://.../JSP3.jsp?id=" + userid + "\">■</a>"
こんな風にしちゃってるんですけど…。
「■」にJSP3.jspのリンクを貼っちゃってる、って言っていいのかな?
これじゃ、requestがforwardされないってことですね?

Tiny Samplesは読んでいたのですけど、どうにも理解できなくて…。
どこかで同じような推奨(jsp:useBeanを使うべし)がされていたのを見ましたが、
やはりこれが定石ですか。挑戦してみようかな…。
投稿日時 - 2002-03-07 15:50:03


  • 回答No.2
レベル9

ベストアンサー率 55% (36/65)

request.setAttribute(...) したうえで、 <jsp:forward page="..." /> すれば受け渡しできます。 ...続きを読む
request.setAttribute(...)

したうえで、

<jsp:forward page="..." />

すれば受け渡しできます。
補足コメント
pinky23

お礼率 75% (21/28)

ありがとうございます。
それは、文字列とか画像とかをクリックして次のページへ移動…
ってしたいときには使えないのですか?
結局、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"が返って来る
という使い方をする…ので合ってますか??
今のところ、これでうまくいってるのですが、
この方法が合ってるのかどうかがよく分からない状態です…。
投稿日時 - 2002-03-08 13:00:02
  • 回答No.3
レベル9

ベストアンサー率 55% (36/65)

No2の回答補足について。 間違っちゃいないと思います。 それでも可能なはずです。 formのアクションで飛ばす場合、他の方法だと、 action="..."で指定するアドレスの末尾に、セッションIDを 附加するのなんかがよく使われるんじゃないでしょうか。 http://....target.jsp;jsessionid=xxxx だったっけ。 最近使ってないから正確 ...続きを読む
No2の回答補足について。

間違っちゃいないと思います。
それでも可能なはずです。
formのアクションで飛ばす場合、他の方法だと、
action="..."で指定するアドレスの末尾に、セッションIDを
附加するのなんかがよく使われるんじゃないでしょうか。
http://....target.jsp;jsessionid=xxxx だったっけ。
最近使ってないから正確に覚えてないですが。
補足コメント
pinky23

お礼率 75% (21/28)

http://hostname/servlet/MyServlet$sessionid=xxxxxxxxx
とかいうやつですね。
セッションIDが丸見えになってセキュリティ上問題があるからって、
クッキーに保存するんでしたっけ??
今一番頭が混乱してるのが「セッション」なので、これから
まだまだ勉強します。なかなか奥が深いです・・・。
投稿日時 - 2002-03-11 15:15:28
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ