JSPとサーブレットの連携
JSPとサーブレットを連携について、フォームのデータのやり取りを使って、紹介していきたいと思います。 input.jsp(フォーム)→Check.java(サーブレットで簡単なエラーチェック)→view.jsp(結果を出力) といった流れで処理を行っていきます。 ですので、今回は •input.jsp •Check.java •view.jsp を作成します ではinput.jspを新規作成し、入力フォームを作成していきます。
【input.jsp 】
<%@ page language=
"java"
contentType=
"text/html; charset=UTF-8"
pageEncoding=
"UTF-8"
%>
<!DOCTYPE html PUBLIC </code>"-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"
>
<html>
<head>
"Content-Type"
content=
"text/html; charset=UTF-8"
>
<title>フォームに値を入力する画面</title>
</head>
<body>
<form method="</code">"post"
action=
"Check"
>
名前:
<input type="</code">"text"
name=
"name"
size=
"30"
maxlength=
"30"
>
年齢:
<input type="</code">"text"
name=
"age"
size=
"10"
maxlength=
"3"
>
上記の内容で送信します
<input type="</code">"submit"
value=
"送信"
/>
<input type="</code">"reset"
value=
"リセット"
/>
</form>
"color: red;"
>
<%
if
(request.getAttribute(
"errmsg"
) !=
null
){ %>
入力エラー:
<%= request.getAttribute(
"errmsg"
) %>
<% } %>
</body>
</html>
【Check.java 】
package
hoge;
import
java.io.IOException;
import
javax.servlet.RequestDispatcher;
import
javax.servlet.ServletContext;
import
javax.servlet.ServletException;
import
javax.servlet.annotation.WebServlet;
import
javax.servlet.http.HttpServlet;
import
javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse;
import
javax.servlet.http.HttpSession;
/**
* Servlet implementation class Check
*/
@WebServlet
(
"/Check"
)
public
class
Check
extends
HttpServlet {
private
static
final
long
serialVersionUID = 1L;
protected
void
processRequest(HttpServletRequest request, HttpServletResponse response)
throws
ServletException, IOException {
// セッションを利用するためにtrue
HttpSession session = request.getSession(
true
);
// 文字化け対策
response.setContentType(
"text/html;charset=UTF-8"
);
request.setCharacterEncoding(
"UTF-8"
);
// フォームデータの取得
String name = request.getParameter(
"name"
);
String age = request.getParameter(
"age"
);
// 初期値にエラーの場合のURL指定
String url =
"/input.jsp"
;
String errmsg =
null
;
if
(name.equals(
""
) || name ==
null
|| age.equals(
""
) || age ==
null
) {
// 空白だった場合errmsgをrequestに格納
errmsg =
"空白となっています。"
;
request.setAttribute(
"errmsg"
, errmsg);
}
else
if
(!age.matches(
"^[0-9]+$"
)) {
errmsg =
"年齢は半角数字で入力して下さい。"
;
request.setAttribute(
"errmsg"
, errmsg);
}
else
{
// 上記のエラーチェックが通った場合、urlを次へ変更し、sessionにフォームデータを格納
url =
"/view.jsp"
;
session.setAttribute(
"name"
, name);
session.setAttribute(
"age"
, age);
}
// フォワードにて次もしくは前画面に遷移する
ServletContext context = getServletContext();
RequestDispatcher rd = context.getRequestDispatcher(url);
rd.forward(request, response);
}
protected
void
doGet(HttpServletRequest request, HttpServletResponse response)
throws
ServletException, IOException {
processRequest(request, response);
}
protected
void
doPost(HttpServletRequest request, HttpServletResponse response)
throws
ServletException, IOException {
processRequest(request, response);
}
}
【view.jsp】
<%@ page language=
"java"
contentType=
"text/html; charset=UTF-8"
pageEncoding=
"UTF-8"
session=
"true"
%>
<!DOCTYPE html PUBLIC </code>"-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"
>
<html>
<head>
"Content-Type"
content=
"text/html; charset=UTF-8"
>
<title>結果を出力します</title>
</head>
<body>
フォームデータの結果を出力します
名前:<%= session.getAttribute(
"name"
) %>さん
年齢:<%= session.getAttribute(
"age"
) %>歳
</body>
</html>
詳細にはサーブレット・JSPの基本を見るべし
※コメント投稿者のブログIDはブログ作成者のみに通知されます