Servlet可以将发送给自己的请求转发给另一个URL地址,这个URL地址可以是html、jsp、servlet或其他的http地址。Servlet中的请求转发有三种形式,主要是通过HttpServletRequest对象和HttpServletResponse对象实现。
public void service(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
//......
1.request.getRequestDispatcher("/url").include(request,response);
2.request.getRequestDispatcher("/url").forward(request,response);
3.request.sendRedirect("/url");
//......
}
三种方式的区别是:
include:将url中的内容包含到当前的servlet输出当中,在服务器端完成,一般叫做包含;
forward:将当前的Request和response对象交给指定的url处理,一般称作转发请求;在服务器端完成,客户端
地址栏看到的路径还是当前请求的servlet路径;
sendRedirect:指示客户端重新发起一次请求,第二次请求指向其参数的url,一般称作重定向;客户端的地址栏将
改变为url值,是由客户端发起的第二次请求。
include与forward的区别:
include是把别人包含进来,forward则是丢掉自己
include是把另一个servlet/jsp处理过后的内容拿过来与本身的servlet的内容一起输出;
forward是把请求的内容转发到另一个servlet/jsp中。在forward之前,在原始的servlet中不能对输出做flush。最终只有被被forward去的servlet的内容被输出。
在原始servlet中设置的响应状态码和响应头会被include的servlet忽略。include的servlet在处理的时候只会保留进入include的servlet之后的状态码和状态头。
对于forward,在两个servlet设置的状态码和状态头都会被用到。
使用include转发时,response的编码格式不是UTF-8,所以请求时会出现乱码现象,因此需要显示的response的编码修改为UTF-8/GBK/GB2312。
不管是include、forward还是sendRedirect,在该行代码执行之后的语句仍然被执行,只是输出到response的内容没有作用了。
总结:
sendRedirect与include、forward的区别在于是不是同一个Request,sendRedirect会有两次交互;
include与forward的区别在于输出的内容,include包含两者的结果,而forward只有forward一个,以及响应头。
分享到:
相关推荐
在Servlet转发到JSP页面时,此时浏览器地址栏上显示的是Servlet的路径,而若JSP页面的超链接还是相对于该JSP页面的地址且该Servlet和该JSP页面不在同一个文件夹下时,则会出现路径混乱问题。 2. 绝对路径概念 相对于...
通过网上总结的Servlet的转发与重定向的区别介绍。希望可以帮的上大家
servlet请求转发、请求重定向、请求包含 获取form数据
主要为大家详细介绍了servlet转发、包含的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
servlet中实现请求转发,用户登录,在servlet中验证用户名和密码.
NULL 博文链接:https://macleo.iteye.com/blog/1045211
项目主体结构是dao+db+filter+pojo+servlet, 使用技术Servlet转发,代码中有注释帮助学者理解,数据库为MySQL资源内含数据库的sql。实现的数据库内容分页,查询分页,对初学者难点是根据get请求的中的url地址进行...
使用jdbc操作数据库,servlet转发页面,jstl获取后台数据
java servlet请求转发重定向 适合于初学者更好的了解页面跳转和原理
javaServlet请求转发和重定向.pdf
1. 手动编写java代码,实现Servlet的访问 2. 使用Eclipse创建Web Project,并创建一个Servlet继承HttpServlet,打印“Hello HttpServlet”在浏览器上。...7. 使用ServletContext对象,实现转发操作
几个Servlet典型应用的例子。如:Servlet中实现页面转发,Servlet处理表单数据
android利用servlet服务端转发数据实现内网两个android设备通信
对Servlet基础知识进行总结,适合新手入门用,里面详细的介绍了Servlet运行原理以及如何创建等
USerLogin servlet 登录实例探究转发与重定向本质区别
什么是servlet? web服务器 web应用(b/s架构软件)的目录结构: Web.xml 参数 系统如何提供表单给用户? 系统如何处理用户提交的表单 1路径问题 ...Servlet的请求转发方式 状态持久 范围 过滤器 事件处理
重定向时服务器产生两次请求,转发产生一次请求,重定向时可以转发到项目以外的任何网址,转发只能在当前项目里转发 重定向会导致request对象信息丢失。转发则不会 转发的url不会变,request.getRequestDispatch()...
servlet+jsp练手小项目,适合初学者进行项目的练手,可以帮助我们熟悉servlet+jsp的项目流程,掌握转发,重定向,路径等问题,有助于后面框架的学习,而且项目并不复杂,主要是锻炼大家的思路,让我们可以熟悉servlet...