Tutorials Logic, IN +91 8092939553 info@tutorialslogic.com
FAQs Support
Navigation
Home About Us Contact Us Blogs FAQs
Tutorials
All Tutorials
Services
Academic Projects Resume Writing Interview Questions Website Development
Compiler Tutorials

Servlet Request and Response

HttpServletRequest

The HttpServletRequest object provides all information about the incoming HTTP request. It extends ServletRequest with HTTP-specific methods.

HttpServletRequest 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

HttpServletResponse Methods
@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

Reading JSON 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.