| Java FAQ | ||
| JSP FAQ | ||
| Servlet FAQ | ||
XyzWs Servlet FAQ:
What is the defference between getNamedDispatcher() and getRequestDispatcher()?
Printer-friendly version |
Mail this to a friend
|
Advertisement
|
What is the defferent between getNamedDispatcher() and getRequestDispatcher()?There are three ways to obtain RequestDispatcher object:
The mainly difference between these methods is that the "getNamedDispatcher()" method from (ServletContext interface) does not add some request "attributes" to the request operation. It means that the included or forwarded page are not able to get some attributes from the request sent. The getRequestDispatcher() methods sets the folloing request attributes while transfering the request in case of include: javax.servlet.include.request_uri javax.servlet.include.servlet_path javax.servlet.include.context_path and it sets the following request attributes while transfering the request in case of forward: javax.servlet.forward.request_uri javax.servlet.forward.servlet_path javax.servlet.forward.context_path javax.servlet.forward.query_string NamedDispatcherReturns a RequestDispatcher object that acts as a wrapper for the named servlet. getNamedDispatcher(String) method takes the name of the Servlet as parameter which is declared via Deployment descriptor. Example: Deployment Descriptor
<servlet>
<servlet-name>FirstServlet</servlet-name>
<servlet-class>com.example.ServletExample</servlet-class>
</servlet>
RequestDispatcher dispatch = request.getNamedDispatcher(?FirstServlet?); dispatch.forward(request, response); Note: A servlet instance can determine its name using servletConfig.getServletName(); This method returns the name of the class that implements the Servlet interface or extends the HttpServlet class. RequestDispatcherReturns a RequestDispatcher object that acts as a wrapper for the resource located at the given path.
RequestDispatcher dispatch = request.getRequestDispatcher("/tes");
Here "/tes" represents the url-pattern element value of the servlet class.
<servlet-mapping>
<servlet-name>Test</servlet-name>
<url-pattern>/tes</url-pattern>
</servlet-mapping>
It represents the path of the servlet class. Since both the base as well as target servlet are in the same package structure by just specifying the url-pattern element value we will be able to access the target servlet. We shouldn't specify the entire path like String str = "/WEB-INF/classes/com/example/posr/Test" RequestDispatcher dispatch = request.getRequestDispatcher(str); To forward a request to a JSP page we use
RequestDispatcher dispatch = request.getRequestDispatcher("/TestJspOne.jsp");
Here "/TestJspOne.jsp" the slash denotes the Jsp page is at the root of the application. |