- - PR -
forループ内でのjsp呼び出しについて
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 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テスト環境でデバッグをしています。(実機にはまだ載せていません) | ||||||||
|
投稿日時: 2003-09-01 17:15
「複数回同じページが表示される」というのがどういうことを意図しているのかよくわかり ませんが、一つのサーブレットへの一度の呼び出しで、複数のJSPにForwardすることは できません。 そもそも何を行いたいのか整理してみてください。 | ||||||||
|
投稿日時: 2003-09-01 17:15
サーブレットについては良く分からないですが、エラー(例外?)内容、stack traceを書いとくと、より適切な解答が得られるのでは?
| ||||||||
|
投稿日時: 2003-09-01 17:21
forwardやめてincludeにしたら動かないかな〜
| ||||||||
|
投稿日時: 2003-09-01 17:29
まさしくそうです。どんな言語で書かれていたとしても原則は1リクエスト1レスポンス です。 複数ページを一気に表示したい場合は、JavaScriptなどを利用して数回リクエストを送信しな ければならないと考えます。 | ||||||||
|
投稿日時: 2003-09-01 17:37
それじゃますうさんに仕様の確認をしましょう。
複数のページが、同時に表示される必要がありますか? それとも、1ページ表示して、それを終了すると次のページが表示されて・・・という処理でよろしいですか? ukさんやKen-Labさんが書かれたように、複数のページを同時に表示するのは不可能ですが、1つ1つ表示させるならば可能ですが。 | ||||||||
|
投稿日時: 2003-09-01 17:40
みなさん、親切なお返事ありがとうございます
すいません。言葉が拙くて。 当初このサーブレットでは、JSPには飛ばさずに、同じサーブレット内の 別のメソッドを呼び出し、そのメソッドの中で、直接HTMLのコードを記述していました。 そこをそっくりそのままJSPに入れ換えようとしているのですが、うまく出来ていないわけです。 もともとがメソッドの呼び出しだったので、気軽に「for文」の中で、jspを呼び出しているのですが、 1度目の呼び出しはどうやら成功しているみたいで、ブラウザ上にHTMLが表示され、 2回目のループで、「javax.servlet.ServletException: 非 HTTP 要求または応答」と言う 例外が発生しています。 「複数回同じページが表示される」というのは、表の繰り返しを想像していただけたらと思います。 「一つのサーブレットへの呼び出しで、複数のjspにForwardする事はできません。」 というのはどういう意味なのでしょうか?詳しく教えていただきませんでしょうか? よろしくお願いします。 | ||||||||
|
投稿日時: 2003-09-01 17:48
Forwardってのがどんな処理かわかっていないと思います。Forwardは、HTTPリクエストに 対するレスポンス処理を他のServlet(JSP含む)に委譲する処理です。既にそのリクエストに 対してなんらかのレスポンス処理を行っていればForwardはできませんし、また既にForward を行っていれば更にForwardができるのは委譲先のServletだけです。 で、本題ですが
このような処理であれば、Servlet側では配列なりListなりにデータを格納してForwardし、 JSP側ではその要素数分だけ表を出力するように実装すればよいと思います。 | ||||||||
