dポイントプレゼントキャンペーン実施中!

初めて投稿させて頂きます。
現在ServletとJSPを使ったプログラミングを行っております。
その中で、"フレームを使用した際にセッションのデータが引き継がれない"という現象が起きてしまい、
どうにも進めることができなくなってしまいました。
下記に詳しく内容を記述します。
ページの流れとしては、

1.ログインJSP(login.jsp)にてIDとパスを入力

2.入力されたものをServlet(Login.class)が受け取りデータベースと照合

3.IDとpassが一致している場合にframeset用のJSP(fs.jsp)に遷移
(RequestDispatcherにパスを指定→forword)

4.frameset用のJSPからフレームA(frameA.jsp)とフレームB(frameB.jsp)のJSPを呼びだす

という流れです。
fs.jspまではsessionのデータが引き継がれているのですが、
frameA.jsp、frameB.jspでsessionのデータを参照することができません。
セッションIDの取得を試みた所、fsとframeAとframeB、すべてのIDが違う状態です。

ローカル上で動かす場合には問題なくセッションが引き継がれるのですが、
(セッションIDが同一であり、中にあるIDやパスの情報を取得することができる。)
サーバー上にあげるとうまく引き継ぐことができません。

サーバー側でファイルの呼び出しの際、マシン名が違う時にセッションが別で生成されるという仕様を見たことがあるので、
それが原因なのかとも思っているのですが、framesetで書いているリンクや、Tomcatのコンテキストルートの修正等を行ってみましたがうまくいきませんでした。
Javaのバージョンは1.6.0、tomcatのバージョンは6.0です。

もし質問が何かズレていたり、何か必要な情報が足りないようでしたら恐れ入りますがその部分も指摘して頂けたら嬉しいです。

どうか皆様の知恵をお貸しください。宜しくお願いします。

A 回答 (2件)

JSPのほうで、セッションを取得しているのですね?


私とは違うスタイルなので、いいアドバイスができるかは微妙ですが・・・。
現在の状況は・・・

1. login.jsp:<@page session="false">
2. LoginServlet:HttpSession#getSession(true) - ログイン成功時
3. fs.jsp:<@page session="true">
4. frameA.jsp, frameB.jsp:<@page session="true">

LoginServlet以外にサーブレットはない、ということであっていますか?
    • good
    • 0

4. で行っているであろうgetSessionですが、引数はtrue / false / なし、どれでしょうか?


true またはなしであるとすると、
セッションのタイムアウト期間が何らかの理由で極端に短く設定されていたりはしないでしょうか?

確認の方法ですが、↓これが参考になるかと思います。
http://www.javaroad.jp/bbs/answer.jsp?q_id=20060 …
    • good
    • 0
この回答へのお礼

dakusui様、ご回答ありがとうございます。
返信が遅れてしまい大変申し訳ありません。

御指摘の件の引数についてですが、現在4で使用しているjsp2件についてはgetSessionを行っておりません。

(getSessionというのはこのような↓ものだと認識しておりますが、間違ってないでしょうか。
HttpSession session = request.getSession(true);)

というのも、その前の段階であるfs.jspの方ではgetSessionを行っておらず、変わりにjsp最上部で
<%@ page session="true" %>
というような記述をしており、それによって(?)fs.jspの段階ではセッションの値を取得できていたためです。
ですが、御指摘通りgetSessionを明示的に記述せずにやっていたことが原因かとも思い、getSessionを追記実装してみましたが、エラー(Duplicate local variable session)を吐いてしまいうまく実装することができませんでした。

お礼日時:2009/01/26 10:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!