Java BeansとServletの連携(フォーム情報によりページ遷移を変更する)

Java Beansを使ったJava ServletとJSPの連携の手順を備忘録。

仕様説明

  1. 正しく入力した場合→成功ページへ遷移
  2. 未入力の場合→エラーページへ遷移
  3. JSPページにinclude()ディレクティブを使い全ページにヘッダとフッタを付ける。

手順スタート

  1. デフォルトプロジェクトを右クリック→新規→サーブレットをクリック。
  2. 新規サーブレット ウインドウが開くと下記の通りに記入および選択をする。
Javaパッケージ クラス名 スーパークラス
servlet ProductServlet javax.servlet.http.HttpServlet
  1. 完了ボタンを押下

ProductServlet.javaの編集

package servlet;
import java.io.IOException;
import java.io.UnsupportedEncodingException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import beans.ProductBean;

/**
* 商品計算サーブレット
*/
public class ProductServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

/**
* コンストラクタ
*/
public ProductServlet() {
super();
}

/**
* doGet
*
* @param request
* @param response
*/
protected void doGet(HttpServletRequest request
, HttpServletResponse response)
throws ServletException, IOException {

// エンコーディング
response.setContentType("text/html; charset=Windows-31J");
request.setCharacterEncoding("Windows-31J");

// 商品名
String productName = request.getParameter("productName");

// 単価
String unitPrice = request.getParameter("unitPrice");

// 数量
String quantity = request.getParameter("quantity");

// 次に遷移するページ(初期値)
String nextPage = "/product/success.jsp";

// 単価と数量が入力状態かチェック
if (unitPrice.length() == 0 || quantity.length() == 0) {
nextPage = "/product/error.jsp";
}

// 商品Beanの定義
ProductBean bean = new ProductBean();

// 設定
bean.setProductName(this.encode(productName));
bean.setQuantity(quantity);
bean.setUnitPrice(unitPrice);

// 結果実行
bean.result();

// リクエストに設定
request.setAttribute("product", bean);

// 表示用のJSPにフォワード
RequestDispatcher rd = request.getRequestDispatcher(nextPage);
rd.forward(request, response);
}

/**
* エンコード処理
*
* @param value 変換文字
* @return
*/
private String encode(String value) {

try {
return new String(value.getBytes("8859_1"),"SJIS");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return value;
}
}

デフォルトプロジェクトを右クリック→新規→JSPをクリック。
新規 JavaServerPage ウインドウが開くと下記の通りに記入する。

<tr>
<th class=des>ファイル名</th>
<td class=des>hedder.jsp</td>
</tr>

</div>

完了ボタンを押下

hedder.jspの編集

<pre class=source>
&lt;%@ page pageEncoding=Windows-31J %&gt;
&lt;div align=center&gt;
&lt;h1&gt;Java Beans 演習&lt;/h1&gt;
&lt;/div&gt;
&lt;hr&gt;
</pre>
</div>

デフォルトプロジェクトを右クリック→新規→JSPをクリック。
新規 JavaServerPage ウインドウが開くと下記の通りに記入する。

<tr>
<th class=des>ファイル名</th>
<td class=des>fotter.jsp</td>
</tr>

</div>

完了ボタンを押下

fotter.jspの編集
<pre class=source>
&lt;%@ page language=java contentType=text/html; charset=windows-31j
pageEncoding=windows-31j%&gt;
&lt;!DOCTYPE html PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>

&lt;%
String title = 未入力です。;
%&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv=Content-Type content=text/html; charset=windows-31j&gt;
&lt;title&gt;&lt;%= title %&gt;&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;%@ include file=/product/hedder.jsp %&gt;
&lt;h2&gt;&lt;%= title %&gt;&lt;/h2&gt;
&lt;a href=/HelloServlet/product/input.jsp&gt;こちら&lt;/a&gt;から入力して下さい。
&lt;%@ include file=/product/fotter.jsp %&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
</div>

デフォルトプロジェクトを右クリック→新規→JSPをクリック。
新規 JavaServerPage ウインドウが開くと下記の通りに記入する。

<tr>
<th class=des>ファイル名</th>
<td class=des>input.jsp</td>
</tr>

</div>

完了ボタンを押下

input.jspの編集

<%@ page language="java" contentType="text/html; charset=windows-31j" pageEncoding="windows-31j"%>

商品計算(Java Beans 演習)

<%@ include file="/product/hedder.jsp" %>
<h2>商品名、単価、数量を記入して下さい。</h2>
<form action="/HelloServlet/ProductServlet" method="get">商品:<input name="productName" type="text" />

単価:<input name="unitPrice" type="text" />円

数量:<input name="quantity" type="text" />個

<input type="submit" value="計算" />

</form><%@ include file="/product/fotter.jsp" %>

デフォルトプロジェクトを右クリック→新規→JSPをクリック。
新規 JavaServerPage ウインドウが開くと下記の通りに記入する。

<tr>
<th class=des>ファイル名</th>
<td class=des>success.jsp</td>
</tr>

</div>

完了ボタンを押下

success.jspの編集
<pre class=source>
<pre>
&lt;%@ page language=java contentType=text/html; charset=windows-31j
pageEncoding=windows-31j%&gt;
&lt;!DOCTYPE html PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv=Content-Type content=text/html; charset=windows-31j&gt;
&lt;title&gt;計算結果&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;%@ include file=/product/hedder.jsp %&gt;
&lt;h2&gt;計算結果&lt;/h2&gt;

&lt;table border=1&gt;
&lt;tr&gt;
&lt;td&gt;商品&lt;/td&gt;
&lt;td&gt;単価&lt;/td&gt;
&lt;td&gt;数量&lt;/td&gt;
&lt;td&gt;価格&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;${product.productName}&lt;/td&gt;
&lt;td&gt;@¥${product.unitPrice}&lt;/td&gt;
&lt;td&gt;${product.quantity}個&lt;/td&gt;
&lt;td&gt;${product.result}円&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;

&lt;%@ include file=/product/fotter.jsp %&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
</div>

デフォルトプロジェクトを右クリック→新規→JSPをクリック。
新規 JavaServerPage ウインドウが開くと下記の通りに記入する。

<tr>
<th class=des>ファイル名</th>
<td class=des>error.jsp</td>
</tr>

</div>

完了ボタンを押下

error.jspの編集
<pre class=source>
&lt;%@ page language=java contentType=text/html; charset=windows-31j
pageEncoding=windows-31j%&gt;
&lt;!DOCTYPE html PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>

&lt;%
String title = 未入力です。;
%&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv=Content-Type content=text/html; charset=windows-31j&gt;
&lt;title&gt;&lt;%= title %&gt;&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;%@ include file=/product/hedder.jsp %&gt;
&lt;h2&gt;&lt;%= title %&gt;&lt;/h2&gt;
&lt;a href=/HelloServlet/product/input.jsp&gt;こちら&lt;/a&gt;から入力して下さい。
&lt;%@ include file=/product/fotter.jsp %&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
</div>

Tomcatを立ち上げ、Webブラウザより<a href=http://localhost:8080/HelloServlet/product/input.jsp>http://localhost:8080/HelloServlet/product/input.jsp</a>にアクセスする。

<img src="入力画面></p

入力欄に商品をオレンジ、単価を110、数量を25個と入力し計算ボタンを押下する。

<img src="成功画面></p

成功画面に遷移し、商品、単価、数量、価格が表示されました。

<img src="入力エラー画面></p

再度 Webブラウザより<a href=http://localhost:8080/HelloServlet/product/input.jsp>http://localhost:8080/HelloServlet/product/input.jsp</a>にアクセスする。
入力欄に商品をオレンジ、単価を未入力、数量を未入力し計算ボタンを押下する。

<img src="エラー画面></p

エラー画面に遷移しました。
これで Java BeansとJSPとJavaサーブレットで画面の遷移が出来ました。
<span class=small>※ <a href=http://mergedoc.sourceforge.jp/>MergeDoc Project</a>よりEclipse 3.5 Galileo Pleiades All in Oneを使用しています。

</ol>

The following two tabs change content below.
渋谷でWebエンジニアをしています。 株主優待目的で日本株からはじめ、投資信託・米国株の流れで投資しています。 最近は懸賞もハマってます(笑) 旅の思い出ログ、投資運用ログ、株主優待ログが中心のブログです。 どうぞ、よろしくお願いします!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)