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!"が出力される。
実行結果
実行すると画面が表示。ボタンが出力されている。「送信」ボタンを押すと、、、、
コンソールに"doPost method moved successfully!"が出力される。