- PR -

forループ内でのjsp呼び出しについて

投稿者投稿内容
ますう
会議室デビュー日: 2003/09/01
投稿数: 12
お住まい・勤務地: 兵庫県
投稿日時: 2003-09-01 17:08
ますうと申します。
いつも参考にさせて頂いてます。

とても初心者の質問で申し訳ないのですが、
サーブレット上からjspを呼出す際に、
「for文」の中にjspの呼び出しを入れて複数回同じページが表示されるように
コーディングしました。しかし、一回目の呼出は正常に行われ、jspからhtmlが生成される
のですが、に周目で、エラーが出てしまい、止まってしまいます。
原因を色々探してみたのですが、どうもよくわかりません。
どなたかどうかお力を貸して頂けませんでしょうか?宜しくお願い致します。

以下に簡単に問題部分を記述します。

for (int i=1;i<=3;i++){

sql="SELECT * FROM TOKMAS WHERE TOK00 = "+ i ;
System.out.println("sql="+sql);
getdata(db2.query(sql)); //<ここでDBにアクセス

req.setAttribute("W_TOK00" ,""+W_TOK00); //
req.setAttribute("W_TOK011",""+ W_TOK011); //
req.setAttribute("W_TOK012",""+ W_TOK012); //

getServletContext().getRequestDispatcher("TOK_01.jsp").forward(req, res);
}


環境は、win2000上のVisualAgeforJava(pro) で、
付属のWasテスト環境でデバッグをしています。(実機にはまだ載せていません)
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2003-09-01 17:15
引用:

ますうさんの書き込み (2003-09-01 17:08) より:
サーブレット上からjspを呼出す際に、
「for文」の中にjspの呼び出しを入れて複数回同じページが表示されるように
コーディングしました。



「複数回同じページが表示される」というのがどういうことを意図しているのかよくわかり
ませんが、一つのサーブレットへの一度の呼び出しで、複数のJSPにForwardすることは
できません。

そもそも何を行いたいのか整理してみてください。
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2003-09-01 17:15
サーブレットについては良く分からないですが、エラー(例外?)内容、stack traceを書いとくと、より適切な解答が得られるのでは?
たーぞう
ぬし
会議室デビュー日: 2003/08/08
投稿数: 317
お住まい・勤務地: お花畑
投稿日時: 2003-09-01 17:21
forwardやめてincludeにしたら動かないかな〜
未記入
大ベテラン
会議室デビュー日: 2003/06/28
投稿数: 219
投稿日時: 2003-09-01 17:29
引用:

ukさんの書き込み (2003-09-01 17:15) より:
一つのサーブレットへの一度の呼び出しで、複数のJSPにForwardすることは
できません。


まさしくそうです。どんな言語で書かれていたとしても原則は1リクエスト1レスポンス
です。
複数ページを一気に表示したい場合は、JavaScriptなどを利用して数回リクエストを送信しな
ければならないと考えます。
たーぞう
ぬし
会議室デビュー日: 2003/08/08
投稿数: 317
お住まい・勤務地: お花畑
投稿日時: 2003-09-01 17:37
それじゃますうさんに仕様の確認をしましょう。

複数のページが、同時に表示される必要がありますか?
それとも、1ページ表示して、それを終了すると次のページが表示されて・・・という処理でよろしいですか?

ukさんやKen-Labさんが書かれたように、複数のページを同時に表示するのは不可能ですが、1つ1つ表示させるならば可能ですが。
ますう
会議室デビュー日: 2003/09/01
投稿数: 12
お住まい・勤務地: 兵庫県
投稿日時: 2003-09-01 17:40
みなさん、親切なお返事ありがとうございます
すいません。言葉が拙くて。

当初このサーブレットでは、JSPには飛ばさずに、同じサーブレット内の
別のメソッドを呼び出し、そのメソッドの中で、直接HTMLのコードを記述していました。

そこをそっくりそのままJSPに入れ換えようとしているのですが、うまく出来ていないわけです。
もともとがメソッドの呼び出しだったので、気軽に「for文」の中で、jspを呼び出しているのですが、
1度目の呼び出しはどうやら成功しているみたいで、ブラウザ上にHTMLが表示され、
2回目のループで、「javax.servlet.ServletException: 非 HTTP 要求または応答」と言う
例外が発生しています。

「複数回同じページが表示される」というのは、表の繰り返しを想像していただけたらと思います。

「一つのサーブレットへの呼び出しで、複数のjspにForwardする事はできません。」
というのはどういう意味なのでしょうか?詳しく教えていただきませんでしょうか?
よろしくお願いします。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2003-09-01 17:48
引用:

ますうさんの書き込み (2003-09-01 17:40) より:
「一つのサーブレットへの呼び出しで、複数のjspにForwardする事はできません。」
というのはどういう意味なのでしょうか?詳しく教えていただきませんでしょうか?
よろしくお願いします。



Forwardってのがどんな処理かわかっていないと思います。Forwardは、HTTPリクエストに
対するレスポンス処理を他のServlet(JSP含む)に委譲する処理です。既にそのリクエストに
対してなんらかのレスポンス処理を行っていればForwardはできませんし、また既にForward
を行っていれば更にForwardができるのは委譲先のServletだけです。

で、本題ですが

引用:

「複数回同じページが表示される」というのは、表の繰り返しを想像していただけたらと思います。



このような処理であれば、Servlet側では配列なりListなりにデータを格納してForwardし、
JSP側ではその要素数分だけ表を出力するように実装すればよいと思います。

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