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

Java ServletとJSPの連携(フォーム情報によりページ遷移を変更する)の手順を備忘録。

仕様説明

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

手順スタート

デフォルトプロジェクトを右クリック→新規→サーブレットをクリック。
新規サーブレット ウインドウが開くと下記の通りに記入および選択をする。

Javaパッケージ</th>
<td class=des>servlet</td>
</tr>

クラス名</th>
<td class=des>JspServlet</td>
</tr>

スーパークラス</th>
<td class=des>javax.servlet.http.HttpServlet</td>
</tr>

</div>

完了ボタンを押下

SessionServlet.javaの編集

package servlet;
import java.io.IOException;

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

/**
* サーブレット処理
*/
public class JspServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

/**
* コンストラクタ
*/
public JspServlet() {
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 name = request.getParameter(yourName);

// サーブレットコンテキストを取得
ServletContext sc = getServletContext();

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

// 未入力チェック
if (name.length() == 0) {

nextPage = /servlet/error.jsp;
}

// ページ遷移
sc.getRequestDispatcher(nextPage).forward(request, response);
}
}

WebContentフォルダの下にservletフォルダを作成する

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

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

</div>

完了ボタンを押下

hedder.jspの編集

<%@ page pageEncoding="Windows-31J" %>
<div align="center">
<h1>JSP サーブレット演習</h1>
</div>

<hr />

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

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

</div>

完了ボタンを押下

fotter.jspの編集

<%@ page pageEncoding="Windows-31J" %>

<hr />

<div align="center">

Copyright 2010 All Rights Reserved.

</div>

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

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

</div>

完了ボタンを押下

input.jspの編集

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

Webブラウザから入力処理

<%@ include file="/servlet/hedder.jsp" %>
<h1>お名前を入力してください。</h1>
<form action="/HelloServlet/JspServlet" method="get"><input name="yourName" type="text" />
<input type="submit" value="送信" /></form><%@ include file="/servlet/fotter.jsp" %>

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

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

</div>
完了ボタンを押下

success.jspを下記の通りに記入

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

<% String getName = request.getParameter("yourName"); String name = new String(getName.getBytes("8859_1"), "JISAutoDetect"); %>

入力成功!

<%@ include file="/servlet/hedder.jsp" %>
<h2>入力成功!</h2>
<%= name %>さん、ご入力ありがとうございました。
<%@ include file="/servlet/fotter.jsp" %>

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

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

</div>

完了ボタンを押下

error.jspの編集

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

<% String title = "未入力です。 "; %>

<%= title %>

<%@ include file="/servlet/hedder.jsp" %>
<h2><%= title %></h2>
<a href="/HelloServlet/servlet/input.jsp">こちら</a>から入力して下さい。

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

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

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

入力欄に「はやと」と入力し送信ボタンを押下する。

"実行結果画面></p

成功画面に遷移しました。

再度 Webブラウザより<a href=http://localhost:8080/HelloServlet/servlet/input.jsp>http://localhost:8080/HelloServlet/servlet/input.jsp</a>にアクセスする。
入力欄を未入力とし送信ボタンを押下する。

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

エラー画面に遷移しました。

これで JSPとJavaサーブレットで画面の遷移が出来ました。

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

コメントを残す

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

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