- - PR -
サーブレットでjspの内容を受信して送信する。
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2004-07-19 21:45
JSPとサーブレットを勉強中し始めた初心者なのですが・・・
jspの入力フォームに入力した文字列をサーブレットで受け取って、その内容を違うjspに飛ばしたいのですが、サーブレットのプログラムがおかしいのか、入力された内容が送信されません。 下記がサーブレットのdoGetメソッドの場所ですが、ここでJspの入力フォームから入力された内容(title)を受信して、setしました。そして、LessonPlanというクラスを生成して、内容をgetしなければいけないと思うのですが、getの使い方がよく分からないです。できれば教えて頂きたいです。 public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, java.io.IOException { LessonPlan lplan = new LessonPlan(); lplan.setTitle(request.getParameter("title")); ServletContext sc = getServletContext(); sc.getRequestDispatcher("/OutputLP.jsp").forward(request, response); } | ||||
|
投稿日時: 2004-07-19 23:18
受けてのJSP側をどうやっているのか気になりますね
| ||||
|
投稿日時: 2004-07-19 23:28
JSP側のソースはこのようにしております。
InputLP.jspでタイトルを入力します。下記がそのソースです。 <%@ page contentType="text/html;charset=Shift_JIS" import="java.io.*" %> <jsp:useBean id="bean" scope="request" class="LessonPlan" /> <html> <head> <title>(タイトル入力画面)</title> </head> <body> <h1>(タイトル入力画面)</h1> <br> <h2>タイトルを入力してください。</h2> <br> <form method="POST" action="lesson"> <h3>タイトル:<input type="text" name = "title" size = "50"></h3> <br><br><hr> <input type="submit" value="登録"> </form> </body> </html> タイトルを出力するjspをOutputLP.jspとしてます。下記がそのソースです。 <%@ page contentType="text/html; charset=Shift_JIS" import="java.lang.*,java.util.*" %> <jsp:useBean id='lplan' class='LessonPlan' scope='session' type='LessonPlan' /> <html> <head> <title>出力画面</title> </head> <h2>出力画面</h2> <br> <body> タイトル:<jsp:getProperty name="lplan" property="title" /> </body> </html> | ||||
|
投稿日時: 2004-07-20 01:10
まず、今回のような構成の場合、
送JSP → 受Servlet → 表示JSP の各→(矢印)のどこで値の受け取りが出来なかったのか、を確認するのが 基本かと。 で、原因(の一つかな?)ですけど。 送JSPでPOSTしてるのに、受ServletがdoGetしてる からではないですかね。 | ||||
|
投稿日時: 2004-07-20 02:06
このオブジェクトをsessionオブジェクトにセットしていないのが原因ではないですか? もしかしてlplanという変数名で宣言すれば、JSPでlplanという名前で受け取れる、とか 勘違いしていませんか? | ||||
|
投稿日時: 2004-07-20 09:11
>もしかしてlplanという変数名で宣言すれば、JSPでlplanという名前で受け取れる、とか
>勘違いしていませんか? 横から失礼します。私も上記のように勘違いしてるひとりなのですが質問です。 なぜサーブレットでセッションにセットしないといけないのでしょうか? タイトルを表示させるJSPの <jsp:useBean id='lplan' class='LessonPlan' scope='session' type='LessonPlan' />という記述ってclass=''で指定したJava Beanから値を受け取るという意味だと今まで 思ってきました。サーブレットのlplan.setTitle(request.getParameter("title")) の記述でbeanに値がセットされているので セッションにセットするという発想がありませんでした。 | ||||
|
投稿日時: 2004-07-20 13:02
多分、解決してると思いますが・・・
下記の記事が参考になると思います。 http://www.atmarkit.co.jp/fjava/javafaq/jsp/jsp05.html http://www.atmarkit.co.jp/fjava/javafaq/jsp/jsp08.html http://www.atmarkit.co.jp/fjava/javafaq/session/session04.html ><jsp:useBean id='lplan' class='LessonPlan' scope='session' type='LessonPlan' /> >という記述ってclass=''で指定したJava Beanから値を受け取るという意味 大体合っています。sessionからlplanをキーにLessonPlanを受け取ります。(JSP側) lplanをキーにLsessonPlanを埋めるのは、Servletの仕事になります。(Servlet側) >beanに値がセットされているので >セッションにセットするという発想がありませんでした。 beanへの値のセットと、 Session(request)へbeanをセットすることは別物です。 | ||||
|
投稿日時: 2004-07-20 23:50
tak3お返事ありがとうございます。
紹介していただいた記事大変参考になりました。 またなにかありましたらよろしくお願いいたします。 | ||||
