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:
- GET Request with Query Parameters:
URL: `http://localhost:8080/myServlet?param1=value1¶m2=value2`request.getParameter("param1")
will return"value1"
request.getParameter("param2")
will return"value2"
- 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"
.
- Use
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>