How do I read request parameters using HttpServletRequest?

In a Jakarta EE (or formerly Java EE) web application, you can use the HttpServletRequest object to read request parameters sent by a client (e.g., from a form, URL query string, or other mechanisms). Below are the common ways to read the parameters:

1. Using getParameter(String name)

This method is used when you need to retrieve a single request parameter by its name. If the parameter doesn’t exist, it will return null.

package org.kodejava.servlet;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;

@WebServlet("/myServlet")
public class ExampleServlet extends HttpServlet {

   @Override
   protected void doGet(HttpServletRequest request, HttpServletResponse response)
           throws ServletException, IOException {
      // Retrieve a single parameter
      String paramValue = request.getParameter("paramName");

      // Check if the parameter exists
      if (paramValue != null) {
         response.getWriter().println("Value of paramName: " + paramValue);
      } else {
         response.getWriter().println("Parameter 'paramName' not found.");
      }
   }
}

2. Using getParameterNames()

This method allows you to retrieve all parameter names as an Enumeration<String>. You can then iterate through them to get individual values.

package org.kodejava.servlet;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;
import java.util.Enumeration;

@WebServlet("/myServlet")
public class ExampleServlet extends HttpServlet {

   @Override
   protected void doGet(HttpServletRequest request, HttpServletResponse response)
           throws ServletException, IOException {
      Enumeration<String> parameterNames = request.getParameterNames();

      while (parameterNames.hasMoreElements()) {
         String paramName = parameterNames.nextElement();
         String paramValue = request.getParameter(paramName);

         response.getWriter().println(paramName + ": " + paramValue);
      }
   }
}

3. Using getParameterValues(String name)

Use this method if you expect the parameter to have multiple values (e.g., a checkbox group or multiple selections from a dropdown), as it returns an array of String.

package org.kodejava.servlet;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;

@WebServlet("/myServlet")
public class ExampleServlet extends HttpServlet {

   @Override
   protected void doPost(HttpServletRequest request, HttpServletResponse response)
           throws ServletException, IOException {
      // Retrieve multiple values for a single parameter
      String[] values = request.getParameterValues("multiParamName");

      if (values != null) {
         response.getWriter().println("Values of multiParamName:");
         for (String value : values) {
            response.getWriter().println(value);
         }
      } else {
         response.getWriter().println("No values provided for 'multiParamName'.");
      }
   }
}

4. Using getParameterMap()

If you need to retrieve all parameters along with their values, you can use getParameterMap(). This returns a Map<String, String[]> where the key is the parameter name, and the value is an array of String containing parameter values.

package org.kodejava.servlet;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;
import java.util.Map;

@WebServlet("/myServlet")
public class ExampleServlet extends HttpServlet {

   @Override
   protected void doGet(HttpServletRequest request, HttpServletResponse response)
           throws ServletException, IOException {
      Map<String, String[]> parameterMap = request.getParameterMap();

      for (Map.Entry<String, String[]> entry : parameterMap.entrySet()) {
         String paramName = entry.getKey();
         String[] paramValues = entry.getValue();

         response.getWriter().println(paramName + ": ");
         for (String value : paramValues) {
            response.getWriter().println("\t" + value);
         }
      }
   }
}

Example Usage Scenarios:

  1. GET Request with Query Parameters:
    URL: `http://localhost:8080/myServlet?param1=value1&param2=value2`

    • request.getParameter("param1") will return "value1"
    • request.getParameter("param2") will return "value2"
  2. POST Request with Form Data:
    If a form submits data like:

    <form method="post" action="/myServlet">
       <input type="text" name="username" value="john123" />
       <input type="password" name="password" value="secret" />
       <input type="submit" />
    </form>
    
    • Use request.getParameter("username") to get "john123".
    • Use request.getParameter("password") to get "secret".

Make sure to handle null values and encode your response properly when writing them back to the client to prevent issues like XSS (Cross-Site Scripting).

Maven dependencies

<dependency>
    <groupId>jakarta.servlet</groupId>
    <artifactId>jakarta.servlet-api</artifactId>
    <version>6.1.0</version>
    <scope>provided</scope>
</dependency>

Maven Central

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.