Tuesday, 8 April 2014

Servlets : Form Data Example - POST Method

🚀 Master Java Servlets & Web Development!

Subscribe to Ram N Java for clean, beginner-friendly coding tutorials and practical web architecture guides!

👉 Click Here to Subscribe Now

Why Use the POST Method for HTML Forms?

When submitting form data in web applications, the two most common HTTP methods are GET and POST. While the GET method appends parameter values directly to the URL query string, the POST method sends data inside the HTTP request body.

Because data is not visible in the browser address bar, the POST method is ideal for handling sensitive information (such as passwords, credit card numbers, and personal details) as well as sending large volumes of content without URL length limitations.

Step 1: Create the HTML POST Form (index.html)

Set the method attribute to "post" and specify your servlet mapping in the action attribute:

<form action="PostMethodServlet" method="post">
  First Name: <input type="text" name="firstName" /><br><br>
  Last Name: <input type="text" name="lastName" /><br><br>
  Password: <input type="password" name="password" /><br><br>
  <input type="submit" value="Submit Form" />
</form>

Step 2: Process the POST Request in the Servlet (PostMethodServlet.java)

In your servlet, override the doPost() method to receive and process the submitted parameters using request.getParameter():

@WebServlet("/PostMethodServlet")
public class PostMethodServlet extends HttpServlet {

  protected void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

    response.setContentType("text/html");
    PrintWriter out = response.getWriter();

    String firstName = request.getParameter("firstName");
    String lastName = request.getParameter("lastName");

    out.println("<h2>Form Submitted Successfully via POST!</h2>");
    out.println("<p>First Name: <strong>" + firstName + "</strong></p>");
    out.println("<p>Last Name: <strong>" + lastName + "</strong></p>");
  }
}

Differences Between GET and POST Methods

  • Data Visibility: GET appends data to the URL query string; POST carries form values encapsulated inside the request body.
  • Data Length: GET is constrained by maximum URL length limits imposed by browsers/servers; POST allows transmitting virtually unlimited payload sizes.
  • Caching & Bookmarking: GET requests can be bookmarked and cached; POST requests are never cached by default and cannot be bookmarked.
  • Servlet Lifecycle: GET requests invoke doGet(), whereas POST requests invoke doPost().

📺 Related Form Processing Tutorials

Learn more about request parameter handling and forms with these tutorials from our channel:


Click here to watch in Youtube : https://www.youtube.com/watch?v=rPFrNU2Qftw

Click the below Image to Enlarge

ServletFormDataPOST Project Dir Structure

CustomerInfoServlet.java
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import java.util.Map;
import java.util.Set;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CustomerInfoServlet extends HttpServlet
{

 private static final long serialVersionUID = 1L;

 public void init()
 {
  System.out
          .println("-----------------------------------------------------");
  System.out
          .println("init method has been called and servlet is initialized");
  System.out
          .println("-----------------------------------------------------");
 }

 public void doPost(HttpServletRequest request, HttpServletResponse response)
         throws ServletException, IOException
 {

  response.setContentType("text/html");

  PrintWriter out = response.getWriter();

  out.println("Read data using  '<b>String getParameter(String name)</b>' method");

  String docType = "<!doctype html public \"-//w3c//dtd html 4.0 "
          + "transitional//en\">\n";
  out.println(docType + "<html>\n" + "<head><title>" + "GET"
          + "</title></head>\n" + "<body bgcolor=\"#f0f0f0\">\n"
          + "<ul>\n" + "  <li><b>First Name</b>: "
          + request.getParameter("first_name") + "\n"
          + "  <li><b>Last Name</b>: "
          + request.getParameter("last_name") + "\n" + "</ul>\n"
          + "</body></html>");

  out.println("\nRead data using '<b>Enumeration getParameterNames()</b>' method \n");

  Enumeration<String> paramNames = request.getParameterNames();

  out.println("<ul>");

  while (paramNames.hasMoreElements())
  {

   String paramName = paramNames.nextElement();
   out.print(" <li><b>" + paramName + ":</b>");
   String paramValue = request.getParameter(paramName);
   out.println(paramValue + "</li>");

  }

  out.println("</ul>");

  out.println("\nRead data using '<b>Map getParameterMap()</b>' method\n");

  Map<String, String[]> paramMap = request.getParameterMap();

  Set<String> paramNamesSet = paramMap.keySet();

  out.println("<ul>");
  for (String paramName : paramNamesSet)
  {
   out.print(" <li><b>" + paramName + ":</b>");
   String[] paramValue = paramMap.get(paramName);
   for (int i = 0; i < paramValue.length; i++)
   {
    out.println(paramValue[i] + "</li>");
   }

  }
  out.println("</ul>");
 }

 public void destroy()
 {
  System.out
          .println("-----------------------------------------------------");
  System.out
          .println("destroy method has been called and servlet is destroyed");
  System.out
          .println("-----------------------------------------------------");
 }
}

web.xml   
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" metadata-complete="true" version="3.0">
  <display-name>ServletForm POST</display-name>
  <description>
        This is a simple web application with a source code organization
        based on the recommendations of the Application Developer's Guide.
    </description>
  <servlet>
    <servlet-name>CustomerInfoForm</servlet-name>
    <servlet-class>CustomerInfoServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>CustomerInfoForm</servlet-name>
    <url-pattern>/CustomerInfoForm</url-pattern>
  </servlet-mapping>
</web-app>

index.html

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
<!DOCTYPE HTML><html lang="en"><head>
<meta charset="UTF-8">
<title>ServletForm POST</title>
</head>
<body>
<p>
<h3>ServletForm POST</H3>
<p></p>
<ul>
 <li><a href="customerform.html">Customer Form</a></li>
</ul>
</body></html>

customerform.html
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
<html>
<body>
 <form action="CustomerInfoForm" method="POST">
 
 First Name: <input type="text" name="first_name">
 <br />
 
 Last Name: <input type="text" name="last_name" />
 
 <input type="submit" value="Submit" />
 
 </form>
</body>
</html>

Environment Used 

JDK version :1.6.0_30
Tomcat version : 7.0.50 

To Download ServletFormDataPOSTApp Project Click the below link

https://sites.google.com/site/javaee4321/servlets/ServletFormDataPOSTApp.zip?attredirects=0&d=1

See also:

  • Servlets Tutorial
  • All Design Patterns Links
  • 1 comment:

    1. Thanks for the great tutorial! The web-sniffer-dot-net site is down for years. Use instead https://websniffer.cc/ It works similarly.

      ReplyDelete

    Tutorials