🚀 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 NowWhy 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:
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():
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 invokedoPost().
📺 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> |
Thanks for the great tutorial! The web-sniffer-dot-net site is down for years. Use instead https://websniffer.cc/ It works similarly.
ReplyDelete