Simkell

【Jave】TomcatとPostgreSQLで行うWebアプリケーションの基礎3

サーブレットとjspを連携します。
サーブレット側からjspを呼び出してみます。

SampleServletのdoGetメソッドを書き換えます。

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		String view = "/index.jsp";
		RequestDispatcher dispatcher = request.getRequestDispatcher(view);
		dispatcher.forward(request, response);
		//response.getWriter().append("Served at: ").append(request.getContextPath());
	}

そしてhttp://localhost:8080/tomcatz/SampleServletにアクセスするとjspで書いた内容が表示されています。

次にサーブレットでセットした値をjsp側で表示します。
SampleServletのdoGetメソッドをまたまたを変更します。

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		String view = "/index.jsp";
		request.setAttribute("kenshi", "高田健志送信!");
		RequestDispatcher dispatcher = request.getRequestDispatcher(view);
		dispatcher.forward(request, response);
		//response.getWriter().append("Served at: ").append(request.getContextPath());
	}

次にindex.jspを修正します

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1><%= request.getAttribute("kenshi") %></h1>
<P>高田健志って世界を敵にして一人で戦ってるんだぜ?高田健志って偉いよなぁ!?</P>
</body>
</html>

PHPとかVueとかでよくある書き方で、HTMLにJavaコードを埋め込んどります。これでServlet→jspにデータを受け渡すことができます。

では次にjsp→Servletでデータを受け渡します。フォームを使ってPOSTでアクセスします。index.jspを下記のように修正します。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1><%= request.getAttribute("kenshi") %></h1>
<P>高田健志って世界を敵にして一人で戦ってるんだぜ?高田健志って偉いよなぁ!?</P>
	<form action="<%=request.getContextPath()%>/SampleServlet" method="post">
		<lavel>Input Your Name</lavel>
		<input type="text" name="jname" />
		<br />
		<input type="submit" value="送信" />
	</form>
</body>
</html>

フォームが用意されたので送信準備OKです。そして送信された時に呼ばれるメソッドは実は既に定義済ですので、修正だけしましょう

SampleServlet.java


	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		System.out.println(request.getParameter("jname"));
		doGet(request, response);
	}

jspから送信されたPOSTアクションは、このdoPostメソッドを通過していきます。今回はフォームで送られてきた内容をコンソールに出力しています。

フォームで送信ボタンを押下した時に、eclipseのコンソール画面にテキストが表示されていれば成功です。