alphaのjava備忘録

alphaが勉強したことを書いていくブログ

doPost()を使用する/JSPからのリクエストを受け取る

サーブレットを実行してdoGet()メソッドでJSPページに飛ばすことが成功したので、次はdoGet()メソッドで表示したJSPページからのリクエストをサーブレットで受け取ってみる。方法としてはJSPページの<body>タグ内に<form>タグと<input type>タグを書くことでサーブレットの呼び出しが可能になる。以下、ソース。


jsp3.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>jsp3.jsp</title>
</head>
<body>

<form method = post action=Servlet3>
<input type="submit" value="送信" />
</form>

</body>
</html>

(1)<body>~</body>の中に<form>タグ、<input type>タグを書く。
(2)<form>~</form>タグでフォーム作成箇所を規定。
 ・フォーム:クライアント(ブラウザ)側で押したり入力したりできる場所。
(3)<form>の括弧内にはmethod属性、action属性を書く。
  ・method属性ではサーバへのデータ送信方法を書く。
   ここでpostを指定すると、サーブレットのdoPost()メソッドを起動させられる
  (つまりdoGet()とは別の処理を記述可能)
  ・action属性では送信先を書く。Servlet3を指定すると Servlet3.javaへ送信する。
(4)<input>タグでフォームを規定。<input>タグ1つで1つのフォームなので、↑の<input type="submit" >を2個にするとボタンも2個できる。
(5)<input>の括弧内にはtype属性、value属性を書く。
  ・type属性ではフォーム形式を書く。submitを指定すると送信ボタンが作成される。
  ・value属性ではフォームの名前を書く。この場合送信ボタンに"送信"と名前が出る。


Servlet3.java

package servletTest;

import java.io.IOException;

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

@WebServlet("/Servlet3")
public class Servlet3 extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String jsp = "/WEB-INF/jsp3.jsp";
		RequestDispatcher rd = request.getRequestDispatcher(jsp);
		rd.forward(request,response);
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("doPost method moved successfully!");
	}
}

(1)Eclipseで「実行」を押すと、最初にdoGet()メソッドが呼ばれforward()でjsp3.jspが画面表示される。
(2)画面(jsp3.jsp)で「送信」ボタンを押すと、doPost()メソッドが呼ばれコンソールに"doPost method moved successfully!"が出力される。



実行結果

実行すると画面が表示。ボタンが出力されている。「送信」ボタンを押すと、、、、
f:id:dream_of_night:20180707162104p:plain


コンソールに"doPost method moved successfully!"が出力される。
f:id:dream_of_night:20180707162109p:plain