フォームからGETメソッドを使ってサーブレットにデータを送信します。
HTMLフォームのコード (signupget.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</H1>
<br><hr><br>
<FORM method="GET" action="GetHttpServlet">
FirstName : <INPUT type="text" name="firstname">
LastName : <INPUT type="text" name="lastname"><br><br>
Mail Address : <INPUT type="text" name="mailaddress"><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>
Interests :<BR>
<INPUT type="checkbox" name="interests" value="music" >Music<BR>
<INPUT type="checkbox" name="interests" value="business">Business<BR>
<INPUT type="checkbox" name="interests" value="health">Health<BR>
<INPUT type="checkbox" name="interests" value="travel">Travel<BR><BR>
<INPUT type="submit" value="SEND">
<INPUT type="reset" value="RESET">
</FORM>
</body>
</html>
解説
<FORM method="GET" action="GetHttpServlet">
...
</FORM>
GETメソッドで情報を送信するフォームを用意します。
フォーム内にテキストボックスやコンボボックス、サブミットボタンを配置します。
サーブレットのコード (GetHttpServlet.java)
package webApplication3;
import java.io.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class GetHttpServlet extends HttpServlet {
/** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
* @param request servlet request
* @param response servlet response
*/
public void doGet(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(" <LI>FirstName : " + req.getParameter("firstname"));
out.println(" <LI>LastName : " + req.getParameter("lastname"));
out.println(" <LI>Mail Address : " + req.getParameter("mailaddress"));
out.println(" <LI>Gender : " + req.getParameter("gender"));
out.println(" <LI>Birthday : " + req.getParameter("birthday"));
//複数選択のForm情報を取得する
String interests[] = req.getParameterValues("interests");
out.println(" <LI>Interests : <BR>");
if (interests != null) {
for (int i = 0; i < interests.length; i++) {
out.println(interests[i] + "<BR>");
}
}
out.println("</UL>");
out.println("</BODY>");
out.println("</HTML>");
out.close();
}
}
解説
doGetメソッドを実装します。
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
ContentTypeとキャラクターセットを設定します。
res.setContentType("text/html; charset=ISO-8859-1");
HttpServletResponse.getWriter()メソッドを呼び出し、PrintWriterを取得します。
PrintWriter out = res.getWriter();
PrintWriterクラスを用いてサーブレットが返す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>");
out.println(" <LI>FirstName : " + req.getParameter("firstname"));
out.println(" <LI>LastName : " + req.getParameter("lastname"));
out.println(" <LI>Mail Address : " + req.getParameter("mailaddress"));
out.println(" <LI>Gender : " + req.getParameter("gender"));
out.println(" <LI>Birthday : " + req.getParameter("birthday"));
HttpServletResponse.getParameterValues()メソッドを呼び出し、チェックボックスグループでチェックされた要素を取得します。
String interests[] = req.getParameterValues("interests");
interests[]配列に格納されている文字(チェックボックスでチェックされた要素)を表示します。
out.println(" <LI>Interests : <BR>");
if (interests != null) {
for (int i = 0; i < interests.length; i++) {
out.println(interests[i] + "<BR>");
}
}
out.println("</UL>");
out.println("</BODY>");
out.println("</HTML>");
PrintWriterを閉じます。
out.close();
コード (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>GetHttpServlet</servlet-name>
<servlet-class>webApplication3.GetHttpServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>GetHttpServlet</servlet-name>
<url-pattern>/GetHttpServlet</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>
実行結果
HTMLフォーム画面
SENDボタン押下後の画面(サーブレット)
著者
iPentecのプログラマー、最近はAIの積極的な活用にも取り組み中。
とっても恥ずかしがり。
最終更新日: 2023-12-20
作成日: 2011-02-09