What is different between these two code lines and when should we use each of them?
1.
RequestDispatcher view = request.getRequestDispatcher(“result.jsp”);
2.
RequestDispatcher view = getServletContext().getRequestDispatcher(“/result.jsp”);
The RequestDispatcher interface provides two methods. They are: public void forward(ServletRequest request,ServletResponse response)throws ServletException,java. io.
We can use request dispatcher only when the other servlet to which the request is being forwarded lies in the same application. On the other hand Send Redirect can be used in both the cases if the two servlets resides in a same application or in different applications.
The key difference between the two is the fact that the forward method will close the output stream after it has been invoked, whereas the include method leaves the output stream open. Junior developers often get confused between the include and the forward methods of the RequestDispatcher.
1) RequestDispatcher view = request.getRequestDispatcher(“result.jsp”);
Here,
java doc says,
The pathname specified may be relative, although it cannot extend outside the current servlet context. If the path begins with a "/" it is interpreted as relative to the current context root. This method returns null if the servlet container cannot return a RequestDispatcher.
The difference between this method and ServletContext.getRequestDispatcher(java.lang.String) is that this method can take a relative path.
2) RequestDispatcher view = getServletContext().getRequestDispatcher(“/result.jsp”);
Here,
java doc says,
The pathname must begin with a "/" and is interpreted as relative to the current context root. Use getContext to obtain a RequestDispatcher for resources in foreign contexts. This method returns null if the ServletContext cannot return a RequestDispatcher.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With