- PR -

JSPからJSPへのデータの受渡の件(request)

投稿者投稿内容
soccer
ベテラン
会議室デビュー日: 2003/09/17
投稿数: 99
投稿日時: 2005-06-30 11:19
Javaの初心者です。
以下のような経路でデータを作成してJSPにデータを受け渡す場合は、どのようにしたら良いでしょうか?
1.Servletの内でデータベースにアクセスして、request.setAttributeにセット

2.フレーム用のJSPで上フレーム用のJSPと下フレーム用のJSPを呼ぶ

3.上フレーム用JSPと下フレーム用のJSPで、1.でrequestにセットした内容をgetAttributeして表示。

※2のフレーム用のJSPで、どのようにして1.のrequestの内容を3.に渡したら良いのでしょうか?
環境は、以下の通り
Eclipse Platform 2.1.2
J2SDK 1.4
TOMCAT 4.1
わんこ
常連さん
会議室デビュー日: 2003/04/30
投稿数: 46
投稿日時: 2005-06-30 11:31
2.からデータを渡すのではなく、
3.から普通にrequest.getAttribute()して値を参照できると思います。

別に親のフレームとか子のフレームとか関係なく。

[ メッセージ編集済み 編集者: わんこ 編集日時 2005-06-30 11:34 ]
soccer
ベテラン
会議室デビュー日: 2003/09/17
投稿数: 99
投稿日時: 2005-06-30 11:44
2.でそのまま何もせずにJSPを呼び
3.でrequest.getAttribute()下のですが、値が取れません。
1.から3の上フレームのJSPを呼ぶと値が取れます。

どうしたら、フレームJSP経由で、値が取れるのでしょうか?
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-06-30 12:27
リクエストやセッションなどのスコープにはライフサイクルがあります。
リクエストはHTTPによる要求の単位がライフサイクルになり、
セッションは論理的に継続された接続がライフサイクルになります。

そして、フレームはページを統合するものではなく、
ただ単に同一のブラウザ内に分割表示をするものです。

HTMLのフレームタグで、対象のURLを定義すると思いますが、
そのフレームタグによって対象のURLの先が呼ばれる場合、
通常アドレスバーやリンクによるアクセス同様GETでリクエストを送信します。

フレームはサーバサイドで動くものではなく、
ブラウザが自動的にURLに対して送信を行ってくれるものなので
フレームのページが生成し終わった段階で、HTTPの要求は終了しています。
だからフレーム内のページでHttpServletRequest#getAttributeを使用しても
値の参照ができないのです。

解決するのであれば、
1・セッションを使う
2・フレーム用ページに書かれているURLにクエリストリングを付加して、
  呼ばれる側のJSPでHttpServletRequest#getParameterを使用して値を取得する
3・フレームからは直接JSPを呼ばず、サーブレットを中継する。
   そのサーブレットで検索処理を行う。
   検索のキーは、2の方法で取得する・・・等
というような方法があります。
soccer
ベテラン
会議室デビュー日: 2003/09/17
投稿数: 99
投稿日時: 2005-06-30 13:08
セッションを使うを方法やったのですが、
値が取得できません。

具体的には、1でsession.setAttribute("VAL", 値)
2.のフレームJSPはそのままで
3.のJSPで、session.getAttribute("VAL)で取得できません。

対応方法を教えて下さい。
soccer
ベテラン
会議室デビュー日: 2003/09/17
投稿数: 99
投稿日時: 2005-06-30 22:02
フレームを越えた場合、セッションの内容は消えてしまうのでしょうか?
セッションなので消えるとは、思えないのですが・・・
サーバーの設定なのでしょうか?
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-06-30 23:15
元のページとフレーム越しのページは、同一ドメインですか?
片方がlocalhostで、もう片方が192.168.xxx.xxxみたいな構成になっていませんか?
soccer
ベテラン
会議室デビュー日: 2003/09/17
投稿数: 99
投稿日時: 2005-07-01 11:40
双方ともlocalhostですが・・・・

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