RequestDispatcher 接口提供了将请求分派到另一个资源的工具,它可以是 html、servlet 或 jsp。此接口还可用于包含其他资源的内容。它是 servlet 协作的方式之一。
在 RequestDispatcher 接口中定义了两种方法。
RequestDispatcher 接口提供了两种方法。它们是:
如上图所示,第二个 servlet 的响应包含在发送到客户端的第一个 servlet 的响应中。 |
ServletRequest 接口的 getRequestDispatcher() 方法返回 RequestDispatcher 的对象。语法:
getRequestDispatcher 方法的语法
使用 getRequestDispatcher 方法的示例
在此示例中,我们将验证用户输入的密码。如果密码是 servlet,它会将请求转发到 WelcomeServlet,否则将显示一条错误消息:对不起,用户名或密码错误!在这个程序中,我们正在检查硬编码的信息。但是您也可以将其检查到我们将在开发章节中看到的数据库中。在此示例中,我们创建了以下文件:
index.html
- <form action="servlet1" method="post">
- Name:<input type="text" name="userName"/><br/>
- Password:<input type="password" name="userPass"/><br/>
- <input type="submit" value="login"/>
- form>
Login.java
- import java.io.*;
- import javax.servlet.*;
- import javax.servlet.http.*;
-
-
- public class Login extends HttpServlet {
-
- public void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
-
- response.setContentType("text/html");
- PrintWriter out = response.getWriter();
-
- String n=request.getParameter("userName");
- String p=request.getParameter("userPass");
-
- if(p.equals("servlet"){
- RequestDispatcher rd=request.getRequestDispatcher("servlet2");
- rd.forward(request, response);
- }
- else{
- out.print("Sorry UserName or Password Error!");
- RequestDispatcher rd=request.getRequestDispatcher("/index.html");
- rd.include(request, response);
-
- }
- }
-
- }
WelcomeServlet.java
- import java.io.*;
- import javax.servlet.*;
- import javax.servlet.http.*;
-
- public class WelcomeServlet extends HttpServlet {
-
- public void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
-
- response.setContentType("text/html");
- PrintWriter out = response.getWriter();
-
- String n=request.getParameter("userName");
- out.print("Welcome "+n);
- }
-
- }
web.xml
- <web-app>
- <servlet>
- <servlet-name>Loginservlet-name>
- <servlet-class>Loginservlet-class>
- servlet>
- <servlet>
- <servlet-name>WelcomeServletservlet-name>
- <servlet-class>WelcomeServletservlet-class>
- servlet>
-
-
- <servlet-mapping>
- <servlet-name>Loginservlet-name>
- <url-pattern>/servlet1url-pattern>
- servlet-mapping>
- <servlet-mapping>
- <servlet-name>WelcomeServletservlet-name>
- <url-pattern>/servlet2url-pattern>
- servlet-mapping>
-
- <welcome-file-list>
- <welcome-file>index.htmlwelcome-file>
- welcome-file-list>
- web-app>