フォームからサーブレットに入力情報を送信し入力内容を表組みして表示する - 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の積極的な活用にも取り組み中。
とっても恥ずかしがり。
掲載日: 2011-02-10
iPentec all rights reserverd.