Servlet Request and Response
HttpServletRequest
The HttpServletRequest object provides all information about the incoming HTTP request. It extends ServletRequest with HTTP-specific methods.
@WebServlet("/request-demo")
public class RequestDemoServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// ===== Request Parameters =====
String name = req.getParameter("name"); // Single value
String[] tags = req.getParameterValues("tags"); // Multiple values (checkboxes)
java.util.Map<String, String[]> params = req.getParameterMap(); // All params
// ===== Request Headers =====
String userAgent = req.getHeader("User-Agent");
String contentType = req.getContentType();
String accept = req.getHeader("Accept");
java.util.Enumeration<String> headerNames = req.getHeaderNames();
// ===== Request Info =====
String method = req.getMethod(); // GET, POST, etc.
String uri = req.getRequestURI(); // /myapp/request-demo
String url = req.getRequestURL().toString(); // http://localhost:8080/myapp/request-demo
String contextPath = req.getContextPath(); // /myapp
String servletPath = req.getServletPath(); // /request-demo
String queryString = req.getQueryString(); // name=Alice&age=25
String remoteAddr = req.getRemoteAddr(); // Client IP
String remoteHost = req.getRemoteHost(); // Client hostname
int serverPort = req.getServerPort(); // 8080
// ===== Request Attributes (set by other servlets/filters) =====
req.setAttribute("processedBy", "RequestDemoServlet");
Object attr = req.getAttribute("processedBy");
// ===== Session =====
HttpSession session = req.getSession(); // Get or create session
HttpSession existing = req.getSession(false); // Get only if exists
// ===== Cookies =====
Cookie[] cookies = req.getCookies();
// ===== Request Body (for POST) =====
// req.getInputStream() - binary data
// req.getReader() - text data
resp.setContentType("text/html;charset=UTF-8");
PrintWriter out = resp.getWriter();
out.println("<p>Method: " + method + "</p>");
out.println("<p>URI: " + uri + "</p>");
out.println("<p>Name param: " + name + "</p>");
out.println("<p>Remote IP: " + remoteAddr + "</p>");
}
}
HttpServletResponse
@WebServlet("/response-demo")
public class ResponseDemoServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String format = req.getParameter("format");
if ("json".equals(format)) {
// ===== JSON Response =====
resp.setContentType("application/json;charset=UTF-8");
resp.setStatus(HttpServletResponse.SC_OK);
PrintWriter out = resp.getWriter();
out.println("{\"name\":\"Alice\",\"age\":25,\"role\":\"admin\"}");
} else if ("file".equals(format)) {
// ===== File Download =====
resp.setContentType("application/octet-stream");
resp.setHeader("Content-Disposition", "attachment; filename=\"data.txt\"");
resp.getWriter().println("File content here");
} else {
// ===== HTML Response =====
resp.setContentType("text/html;charset=UTF-8");
resp.setCharacterEncoding("UTF-8");
// Set response headers
resp.setHeader("X-Custom-Header", "MyValue");
resp.addHeader("Cache-Control", "no-cache, no-store, must-revalidate");
resp.setIntHeader("X-Request-Count", 42);
resp.setDateHeader("Expires", 0);
// Set status code
resp.setStatus(HttpServletResponse.SC_OK); // 200
PrintWriter out = resp.getWriter();
out.println("<h2>Response Demo</h2>");
out.println("<p>Content-Type: " + resp.getContentType() + "</p>");
out.println("<p>Buffer size: " + resp.getBufferSize() + "</p>");
}
}
}
Reading POST Body
@WebServlet("/api/users")
public class UserApiServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// Read JSON body from request
StringBuilder sb = new StringBuilder();
java.io.BufferedReader reader = req.getReader();
String line;
while ((line = reader.readLine()) != null) {
sb.append(line);
}
String jsonBody = sb.toString();
// jsonBody = {"name":"Alice","email":"alice@example.com"}
// Parse JSON (using a library like Gson or Jackson in real apps)
// For demo: simple string parsing
System.out.println("Received JSON: " + jsonBody);
// Send JSON response
resp.setContentType("application/json;charset=UTF-8");
resp.setStatus(HttpServletResponse.SC_CREATED); // 201
resp.getWriter().println("{\"status\":\"created\",\"message\":\"User created successfully\"}");
}
}
Ready to Level Up Your Skills?
Explore 500+ free tutorials across 20+ languages and frameworks.