- PR -

サーブレットでjspの内容を受信して送信する。

投稿者投稿内容
ドラ
常連さん
会議室デビュー日: 2004/06/24
投稿数: 25
投稿日時: 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);
}
わたびん
常連さん
会議室デビュー日: 2003/02/26
投稿数: 24
投稿日時: 2004-07-19 23:18
受けてのJSP側をどうやっているのか気になりますね
ドラ
常連さん
会議室デビュー日: 2004/06/24
投稿数: 25
投稿日時: 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>
せん
ぬし
会議室デビュー日: 2002/03/04
投稿数: 397
投稿日時: 2004-07-20 01:10
まず、今回のような構成の場合、

送JSP → 受Servlet → 表示JSP

の各→(矢印)のどこで値の受け取りが出来なかったのか、を確認するのが
基本かと。

で、原因(の一つかな?)ですけど。

送JSPでPOSTしてるのに、受ServletがdoGetしてる
からではないですかね。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2004-07-20 02:06
引用:

ドラさんの書き込み (2004-07-19 21:45) より:
LessonPlan lplan = new LessonPlan();


このオブジェクトをsessionオブジェクトにセットしていないのが原因ではないですか?
もしかしてlplanという変数名で宣言すれば、JSPでlplanという名前で受け取れる、とか
勘違いしていませんか?
しん
常連さん
会議室デビュー日: 2004/04/04
投稿数: 48
投稿日時: 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に値がセットされているので
セッションにセットするという発想がありませんでした。
tak3
ベテラン
会議室デビュー日: 2004/04/15
投稿数: 80
お住まい・勤務地: 菜の花・銀杏
投稿日時: 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/04/04
投稿数: 48
投稿日時: 2004-07-20 23:50
tak3お返事ありがとうございます。
紹介していただいた記事大変参考になりました。
またなにかありましたらよろしくお願いいたします。

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