The RequestDispatcher interface present in javax.servlet.* package which is used to dispatch the request to another resource. The resource may be html, Servlet or jsp. This interface can also be used to include the content of another resource also. Actually this is Servlet Collaboration. There are two methods defined in the RequestDispatcher interface, such as forward() method and include() method.
public void forward(ServletRequest request, ServletResponse response)throws ServletException,java.io.IOException:
this forward() method takes two arguments such as request object and response object and throws ServletException and IOException.
These forward() method and include() method is invoked by the RequestDispatcher object. So here the question arises how we will get the RequestDispatcher object. The answer is very simple. There is a method getRequestDispatcher() present in ServletRequest interface when invoked by the request object then it returns RequestDispatcher object. RequestDispatcher rd=request.getRequestDispatcher("MyServlet2");
Let's see an example for better clarity:
In this example, we are validating a password entered by the user. If password is javarace, it will forward the request to the MyServlet2, otherwise it will show an error message: invalid password... In this example, we have considered following files:
<!DOCTYPE html> <html> <head> <meta charset="ISO-8859-1"> <title>Insert title here</title> </head> <body> <h2><u>Login Form:</u></h2><br><br> <form action="First" method="get"> <table> <tr><th>Username:</th><td><input type="text" name="uname"> <tr><th>Password:</th><td><input type="password" name="pass"> <tr><th><input type="submit" value="Submit"></th><td><input type="reset" value="Reset"> </table> </form> </body> </html>
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class First extends HttpServlet { public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException { response.setContentType("text/html"); PrintWriter out=response.getWriter(); String s1=request.getParameter("uname"); String s2=request.getParameter("pass"); if(s2.equals("1234")) { RequestDispatcher rd=request.getRequestDispatcher("Welcome"); rd.forward(request,response); } else { out.println("Invalid Password"); RequestDispatcher rd=request.getRequestDispatcher("login.html"); rd.include(request, response);> } } }
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Welcome extends HttpServlet { public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException { response.setContentType("text/html"); PrintWriter out=response.getWriter(); out.println("Successfully Logged In"); } }
<web-app> <servlet> <servlet-name>abc</servlet-name> <servlet-class>java8s.First</servlet-class> </servlet> <servlet-mapping> <servlet-name>abc</servlet-name> <url-pattern>/First</url-pattern> </servlet-mapping> <servlet> <servlet-name>xyz</servlet-name> <servlet-class>java8s.Welcome</servlet-class> </servlet> <servlet-mapping> <servlet-name>xyz</servlet-name> <url-pattern>/Welcome</url-pattern> </servlet-mapping> </web-app>
Silan Software is one of the India's leading provider of offline & online training for Java, Python, AI (Machine Learning, Deep Learning), Data Science, Software Development & many more emerging Technologies.
We provide Academic Training || Industrial Training || Corporate Training || Internship || Java || Python || AI using Python || Data Science etc