Java.Servlet.What is Request Dispatcher?

The RequestDispatcher is a Servlet API tool that lets you forward or include one web resource (like a servlet, JSP, or static file) from another servlet.

📦 What is RequestDispatcher?

It’s an interface in the javax.servlet package that allows one servlet to:

ActionDescription
ForwardTransfer the request to another resource on the server, without the client knowing.
IncludeInclude the output of another resource in the current response.
RequestDispatcher dispatcher = request.getRequestDispatcher("target.jsp");

Or via the ServletContext:

RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/target.jsp");

🔁 Two Main Operations

1. Forward

Transfers control to another resource on the server, and terminates the current servlet.

request.getRequestDispatcher("/result.jsp").forward(request, response);
  • URL does not change in the browser
  • Request and response objects are shared
  • Control does not return to the original servlet

➡️ Use case: Pass control after processing form data, like login or registration

2. Include

Includes the output of another resource into the current response.

request.getRequestDispatcher("/footer.jsp").include(request, response);
  • Merges output
  • Used for layouts, header/footer, etc.
  • Original servlet keeps control

➡️ Use case: Composing pages with common headers/footers

🧪 Example: Forwarding to a JSP

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse res)
        throws ServletException, IOException {

    String name = req.getParameter("name");
    req.setAttribute("user", name);  // pass data

    RequestDispatcher dispatcher = req.getRequestDispatcher("/welcome.jsp");
    dispatcher.forward(req, res); // internally transfer
}

In welcome.jsp:

<h1>Welcome, ${user}</h1>

🧠 RequestDispatcher vs Redirect

FeatureRequestDispatcher.forward()HttpServletResponse.sendRedirect()
TypeServer-sideClient-side
Browser URL changes?❌ No✅ Yes
Can share request data?✅ Yes (setAttribute)❌ No (requires session or params)
Control returns?❌ No (after forward)❌ No (new request entirely)
Use caseInternal workflowRedirecting user elsewhere (e.g., login)

✅ Summary

ConceptDescription
What is it?Interface to forward or include resources
Where to get it?request.getRequestDispatcher() or from context
Key methodsforward(), include()
Use casesLayouts, controller-to-view transitions
This entry was posted in Без рубрики. Bookmark the permalink.