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の編集

[code lang=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;
}
}
[/code]

デフォルトプロジェクトを右クリック→新規→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の編集

[code lang=css]
<%@ 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" %>

[/code]

デフォルトプロジェクトを右クリック→新規→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エンジニアをしています。 株主優待目的で日本株からはじめ、投資信託・米国株の流れで投資しています。 最近は懸賞もハマってます(笑) 旅の思い出ログ、投資運用ログ、株主優待ログが中心のブログです。 どうぞ、よろしくお願いします!

コメントを残す

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

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

About Us

Sed gravida lorem eget neque facilisis, sed fringilla nisl eleifend. Nunc finibus pellentesque nisi, at is ipsum ultricies et. Proin at est accumsan tellus.