- RequestDispatcher接口
- RequestDispatcher接口的方法
- 前进方法
- 包含方法
- 如何获取RequestDispatcher的对象
- RequestDispatcher接口的示例
RequestDispatcher接口中定义了两种方法。
RequestDispatcher接口的方法
RequestDispatcher接口提供两种方法。他们是:
- public void forward(ServletRequest请求, ServletResponse响应)引发ServletException, java.io.IOException:将请求从Servlet转发到服务器上的另一个资源(Servlet, JSP文件或HTML文件)。
- public void include(ServletRequest request, ServletResponse response)抛出ServletException, java.io.IOException:在响应中包含资源的内容(Servlet, JSP页面或HTML文件)。
文章图片
如上图所示, 第二个servlet的响应被发送到客户端。第一个Servlet的响应不会显示给用户。
文章图片
如上图所示, 第二个servlet的响应包含在发送到客户端的第一个servlet的响应中。 |
ServletRequest接口的getRequestDispatcher()方法返回RequestDispatcher的对象。句法:
getRequestDispatcher方法的语法
public RequestDispatcher getRequestDispatcher(String resource);
使用getRequestDispatcher方法的示例
RequestDispatcher rd=request.getRequestDispatcher("servlet2");
//servlet2 is the url-pattern of the second servletrd.forward(request, response);
//method may be include or forward
RequestDispatcher接口的示例
在此示例中, 我们正在验证用户输入的密码。如果密码是servlet, 它将转发请求到WelcomeServlet, 否则将显示错误消息:抱歉, 用户名或密码错误!。在此程序中, 我们正在寻找硬编码信息。但是你也可以将其检查到数据库中, 这将在开发章节中看到。在此示例中, 我们创建了以下文件:
- index.html文件:用于从用户获取输入。
- Login.java文件:用于处理响应的servlet类。如果提供密码, 它将把请求转发到欢迎servlet。
- WelcomeServlet.java文件:用于显示欢迎消息的servlet类。
- web.xml文件:一个部署描述符文件, 其中包含有关servlet的信息。
文章图片
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="http://www.srcmini.com/login"/>
<
/form>
【Servlet中的RequestDispatcher示例图解】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>
Login<
/servlet-name>
<
servlet-class>
Login<
/servlet-class>
<
/servlet>
<
servlet>
<
servlet-name>
WelcomeServlet<
/servlet-name>
<
servlet-class>
WelcomeServlet<
/servlet-class>
<
/servlet>
<
servlet-mapping>
<
servlet-name>
Login<
/servlet-name>
<
url-pattern>
/servlet1<
/url-pattern>
<
/servlet-mapping>
<
servlet-mapping>
<
servlet-name>
WelcomeServlet<
/servlet-name>
<
url-pattern>
/servlet2<
/url-pattern>
<
/servlet-mapping>
<
welcome-file-list>
<
welcome-file>
index.html<
/welcome-file>
<
/welcome-file-list>
<
/web-app>
下载此示例
下载此示例(在Myeclipse IDE中开发)
下载此示例(在Eclipse IDE中开发)
下载此示例(在netbeans IDE中开发)
文章图片
文章图片
文章图片
文章图片
推荐阅读
- Servlet过滤器基本介绍和用法
- 服务器端包含(SSI)介绍
- Servlet中的SendRedirect用法示例
- Servlet中的分页示例图解
- Servlet使用JavaMail API发送电子邮件示例
- AndroidSDK的默认安装路径
- springboot[2.3.4.RELEASE]application.properties常用配置
- SpringApplication.run(xxx.class, args)背后的东东——整体脉络
- Android | 零代码快速集成AGC崩溃服务