What is the difference between the getRequestDispatcher(String) and getNamedDispatcher(String) methods in the ServletContext Class? 
NamedDispatcher 
Returns 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-nameFirstServletservlet-name    servlet-classcom.example.ServletExampleservlet-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. 
RequestDispatcher 
Returns 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-nameTestservlet-name    url-pattern/tesurl-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. 
No comments:
Post a Comment