女人永远是最佳辩手,北京治疗尖锐湿疣,系统错误
原文链接:http://www.yiidian.com/servlet/servlet-dispatcher.html
使用servlet请求转发与包含
requestdispatcher接口提供了将请求转发到另一个资源的功能,该资源可能是html,servlet或jsp。该接口还可以用于包含其他资源的内容。
requestdispatcher接口提供两种方法。他们是:
public void forward(servletrequest request,servletresponse response)thorws servletexception,java.io.ioexception
:将请求从servlet转发到服务器上的另一个资源(servlet,jsp文件或html文件)。public void include(servletrequest request,servletresponse response)throws servletexception,java.io.ioexception
:在响应中包含资源(servlet,jsp页面或html文件)的内容。如上图所示,第二个servlet的响应被发送到客户端。第一个servlet的响应不会显示给用户。
如上图所示,第二个servlet的响应包含在第一个servlet的响应中,最终才发送回用户。
servletrequest接口的getrequestdispatcher()方法返回requestdispatcher的对象。语法是:
public requestdispatcher getrequestdispatcher(string resource);
getrequestdispatcher方法示例:
requestdispatcher rd=request.getrequestdispatcher("servlet2"); //servlet2是第二个servlet的url-pattern rd.forward(request, response);//这里可以是forward或者include方法
在本案例中,我们需要验证用户输入的密码。如果密码是yiidian,将转发请求到welcomeservlet,否则将显示错误消息:“抱歉,用户名或密码错误!”本案例,我们的用户名和密码都是采用硬编码方式,当然您也可以将其改为从数据库中查询,可以参考后面的开发案例《使用servlet完成用户登录》。以下文件是本案例需要的文件:
index.jsp文件:用于从用户获取输入。
loginservlet.java文件:用于处理响应的servlet类。如果用户输入了正确的密码,它将把请求转发到welcomeservlet。
welcomeservlet.java文件:用于显示欢迎消息的servlet类。
web.xml文件:web部署描述符文件,其中包含所有servlet的配置信息。
<%@ page contenttype="text/html;charset=utf-8" language="java" %> <html> <head> <meta charset="utf-8"> <title>一点教程网-请求转发与包含</title> <meta http-equiv="content-type" content="text/html" charset="utf-8"> </head> <body> <form action="servlet1" method="post"> 用户名:<input type="text" name="username"/><br/> 密码:<input type="password" name="userpass"/><br/> <input type="submit" value="登录"/> </form> </body> </html>
import javax.servlet.requestdispatcher; import javax.servlet.servletexception; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import java.io.ioexception; import java.io.printwriter; /** * 一点教程网 - http://www.yiidian.com * 验证密码是否正确 */ public class loginservlet extends httpservlet{ public void dopost(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception { response.setcontenttype("text/html;charset=utf-8"); printwriter out = response.getwriter(); string n=request.getparameter("username"); string p=request.getparameter("userpass"); if(p.equals("yiidian")){ requestdispatcher rd=request.getrequestdispatcher("servlet2"); rd.forward(request, response); }else{ out.print("抱歉,用户名或密码错误!"); requestdispatcher rd=request.getrequestdispatcher("/index.jsp"); rd.include(request, response); } } }
import javax.servlet.requestdispatcher; import javax.servlet.servletexception; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import java.io.ioexception; import java.io.printwriter; /** * 一点教程网 - http://www.yiidian.com * 欢迎页面 */ public class welcomeservlet extends httpservlet{ public void dopost(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception { response.setcontenttype("text/html;charset=utf-8"); printwriter out = response.getwriter(); string n=request.getparameter("username"); out.print("欢迎你,"+n); } }
<?xml version="1.0" encoding="utf-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <servlet> <servlet-name>login</servlet-name> <servlet-class>loginservlet</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> </web-app>
输入yiidian密码,正确的情况
!
输入错误密码的情况
欢迎关注我的公众号::一点教程。获得独家整理的学习资源和日常干货推送。
如果您对我的系列教程感兴趣,也可以关注我的网站:
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
浅析我对 String、StringBuilder、StringBuffer 的理解
使用IDEA搭建SSM框架的详细教程(spring + springMVC +MyBatis)
Springboot整合freemarker 404问题解决方案
引入mybatis-plus报 Invalid bound statement错误问题的解决方法
网友评论