フォームからサーブレットに入力情報を送信し入力内容を表組みして表示する - Java
HTMLフォームからサーブレットにフォームの入力内容を送信します。サーブレットでは送信内容を表具魅して表示します。
コード (HTMLフォーム)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
<title>Form</title>
</head>
<body>
<H1>Sign Up Form (POST版)</H1>
<br><hr><br>
<FORM method="POST" action="PostHttpServlet">
FirstName : <INPUT type="text" name="firstname">
LastName : <INPUT type="text" name="lastname"><br><br>
Mail Address : <INPUT type="text" name="mailaddress"><br><br>
Zip Code : <INPUT type="text" name="zipcode"><br><br>
Address : <INPUT type="text" name="address"><br><br>
telephone : <INPUT type="text" name="telephone"><br><br>
Gender :
<INPUT type="radio" name="gender" value="female" checked>female
<INPUT type="radio" name="gender" value="male">male<BR><BR>
Birthday :
<SELECT name="birthday">
<OPTION value="" selected>----</OPTION>
<OPTION value="Jan">Jan</OPTION>
<OPTION value="Feb">Feb</OPTION>
<OPTION value="Mar">Mar</OPTION>
<OPTION value="Apr">Apr</OPTION>
<OPTION value="May">May</OPTION>
<OPTION value="Jun">Jun</OPTION>
<OPTION value="Jly">Jly</OPTION>
<OPTION value="Aug">Aug</OPTION>
<OPTION value="Sep">Sep</OPTION>
<OPTION value="Oct">Oct</OPTION>
<OPTION value="Nov">Nov</OPTION>
<OPTION value="Dec">Dec</OPTION>
</SELECT><BR><BR>
<INPUT type="submit" value="SEND">
<INPUT type="reset" value="RESET">
</FORM>
</body>
</html>
解説
HTMLフォームを用意します。メソッドはPOSTでデータを送信します。action先はサーブレットとします。
HTMLフォーム内にテキストボックスやSUBMITボタンを用意します。
<FORM method="POST" action="PostHttpServlet">
コード (サーブレット:PostHttpServlet.java)
package webApplication7;
import java.io.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class PostHttpServlet extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
res.setContentType("text/html; charset=ISO-8859-1");
PrintWriter out = res.getWriter();
//クライアントに送るHTML
out.println("<HTML>");
out.println("<HEAD>");
out.println("<TITLE>SignUp Data</TITLE>");
out.println("</HEAD>");
out.println("<BODY>");
out.println("<H1>SignUp Dagta</H1>");
out.println("<BR><HR><BR>");
out.println("<UL>");
//Form情報を取得
out.println("<table border=\"1\" width=\"500\" cellspacing=\"0\"
cellpadding=\"5\" bordercolor=\"#333333\">");
out.println("<tr>");
out.println("<th>FirstName");
out.println("<th>" + req.getParameter("firstname"));
out.println("</tr>");
out.println("<tr>");
out.println("<th>LastName");
out.println("<th>" + req.getParameter("lastname"));
out.println("</tr>");
out.println("<tr>");
out.println("<th>Mail Address");
out.println("<th>" + req.getParameter("mailaddress"));
out.println("</tr>");
out.println("<tr>");
out.println("<th>Zip Code");
out.println("<th>" + req.getParameter("zipcode"));
out.println("</tr>");
out.println("<tr>");
out.println("<th>Zip Code");
out.println("<th>" + req.getParameter("zipcode"));
out.println("</tr>");
out.println("<tr>");
out.println("<th>Address");
out.println("<th>" + req.getParameter("address"));
out.println("</tr>");
out.println("<tr>");
out.println("<th>Telephone");
out.println("<th>" + req.getParameter("telephone"));
out.println("</tr>");
out.println("<tr>");
out.println("<th>Gender");
out.println("<th>" + req.getParameter("gender"));
out.println("</tr>");
out.println("<tr>");
out.println("<th>Birthday");
out.println("<th>" + req.getParameter("birthday"));
out.println("</tr>");
out.println("</table>");
out.println("<BR>");
out.println("</UL>");
out.println("</BODY>");
out.println("</HTML>");
out.close();
}
}
解説
doPostメソッドを実装します。
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
setContentType()メソッドを呼び出し、COntentTypeとキャラクターセットを指定します。
res.setContentType("text/html; charset=ISO-8859-1");
PrintWriter out = res.getWriter();
//クライアントに送るHTML
out.println("<HTML>");
out.println("<HEAD>");
...(中略)...
//Form情報を取得
out.println("<table border=\"1\" width=\"500\" cellspacing=\"0\"
cellpadding=\"5\" bordercolor=\"#333333\">");
out.println("<tr>");
out.println("<th>FirstName");
out.println("<th>" + req.getParameter("firstname"));
out.println("</tr>");
out.println("<tr>");
out.println("<th>LastName");
out.println("<th>" + req.getParameter("lastname"));
out.println("</tr>");
...(中略)...
out.println("</UL>");
out.println("</BODY>");
out.println("</HTML>");
out.close();
PrintWriterを取得し、サーブレットが出力するHTMLを書き出します。書き出し終わったらPrintWriterを閉じます。また、POSTで送信されたパラメータの値はreq.getParameter("[パラメータ名]")で取得します。
コード (web.xml)
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation
="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>PostHttpServlet</servlet-name>
<servlet-class>webApplication7.PostHttpServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>PostHttpServlet</servlet-name>
<url-pattern>/PostHttpServlet</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
実行結果
入力フォーム
SENDボタンクリック後(サーブレット)
著者
iPentecのプログラマー、最近はAIの積極的な活用にも取り組み中。
とっても恥ずかしがり。