Include,Forward,sendRedirct的区别(转)
三者在servlet中的最大区别是:
Include和Forward:将当前请求转到另外一个JSP或者servlet处理。
sendRedirct:将当前请求返回到浏览器,带上要redirect的URL,浏览器重新发一个新的请求到新的URL。
include和forward的区别:
include 是去而复返,forward 是前不见古人,后不见来者。
include 是把别人包含进来,forward 是丢掉了自己。
include是把另一个servlet/jsp处理过后的内容拿过来与本身的servlet的内容一同输出.
原始servlet输出的内容+被include进来的servlet的输出内容+原始servlet输出的内容。
forward方法是把请求的内容转发到另外的一个servlet/jsp。在forward之前,在原始的servlet中不能对输出做flush。
最终只有被被forward去的servlet的内容被输出。
在原始servlet中设置的响应状态码和响应头会被include的servlet忽略。include的servlet在处理的时候只会保留进入include的servlet之后的状态码和响应头。
对于forward,在两个地方设置的状态码和响应头都会被用到。
include乱码的一个原因可能就是没有在被include的servlet设置response.setContentType("text/html;charset=utf-8")。
不管是Include,Forward,还是sendRedirct,在该行代码之后的语句仍然被执行,只是输出到response的内容没有作用。
如:before和after仍然被打印到控制台。
System.out.println("before");
//include,forward,sendredirect语句
System.out.println("after");
forward在jsp和servlet中会有不同:如下after不会被打印到控制台。
<%System.out.println("before"); %>
<jsp:forward page="t.dest"/>
<%System.out.println("after"); %>
使用:
sendRedirect:response.sendRedirect("path"); servlet和jsp里面一样。
include和forward:
getServletContext().getRequestDispatcher(path).include(request,response);
getServletContext().getRequestDispatcher(path).forward(request,response);
这里面的path必须以"/",相对于当前WEB应用程序根目录。
request.getRequestDispatcher(path).include(request,response);
request.getRequestDispatcher(path).forward(request,response);
这里面的path可以是以"/"开头,也可以使用相对路径。
在JSP中
<jsp:include page=""/>
<jsp:forward page=""/>
总结:
sendRedirect与include,forward的区别在于是不是同一个request,sendRedirect会有两次交互。
include与forward的区别在于输出内容(include包含两者,forward只有forward一个),以及响应头!
原文地址:http://blog.csdn.net/kkdelta/article/details/4129458
Include,Forward,sendRedirct的区别(转)的更多相关文章
- (转发)RequestDispatcher的include()方法和forward()方法的区别
forward(): 该方法用于将请求从一个Servlet传递给服务器上的另外的Servlet.JSP页面或者是HTML文件. 在Servlet中,可以对请求做一个初步的处理,然后调用这个方法,将请求 ...
- php中include()和require()的区别
1.引用文件方式 对 include()来说,在include()执行时文件每次都要进行读取和评估:而对于require()来说,文件只处理一次(实际上,文件内容替换 了require()语句.这就意 ...
- [转]require(),include(),require_once()和include_once()区别
require(),include(),require_once()和include_once()区别 面试中最容易提到的一个PHP的问题,我想和大家共勉一下: require()和include() ...
- 关于require,require_once,include和include_once的区别
一.定义 require,require_once,include,include_once都属于PHP的关键字,也就是说它们实际都是PHP的语句,而不是函数,类似于print,echo一样,也是PH ...
- PHP中include和require的区别
include和require的区别,其实两者没有太大的区别,如果要包含的文件不存在,include提示notice,然后继续执行下面的语句,require提示致命错误并且退出. 根据测试,win32 ...
- php引入文件(include 和require的区别)
引入文件: 首先需要一个php文件: <?php class shao//类名必须和文件名相同!!! { public $xxx="666"; } $shili = new ...
- php require、require_once和include、include_once的区别
一.引入php文件路径的方法require '文件路径'; require ('文件路径');require_once '文件路径'; require_once ('文件路径');include 同 ...
- 关于thymeleaf th:replace th:include th:insert 的区别
关于thymeleaf th:replace th:include th:insert 的区别 th:insert :保留自己的主标签,保留th:fragment的主标签. th:re ...
- 【转载】PHP中require(),include(),require_once()和include_once()区别
关于这方面的知识,这篇文章讲的较全: http://www.jb51.net/article/22467.htm require 的使用方法如 require("MyRequireFile. ...
随机推荐
- 如何在退出Hue后关闭Spark会话
https://mp.weixin.qq.com/s/QLu9XhDv1YuK19VCJsFXGw
- javascript数据基本类型和引用类型
JavaScript基本数据类型: js基本数据类型包括:undefined,null,number,boolean,string.基本数据类型是按值访问的,就是说我们可以操作保存在变量中的实际的值. ...
- vue实现单选多选反选全选全不选
单选 当我们用v-for渲染一组数据的时候,我们可以带上index以便区分他们我们这里利用这个index来简单地实现单选 <li v-for="(item,index) in radi ...
- SpringBoot发送简单文本邮件
1.pom.xml添加 spring-boot-starter-mail 依赖 <dependency> <groupId>org.springframework.boot&l ...
- Web Assembly背景
Javascript ,也叫Ecma script, 是这家伙用了 10 天时间赶出来的.. 所以,各位程序猿们,如果你觉得老板 10 天要你们上线一个 App 是一个丧心病狂的事情,那么可以多想想 ...
- Linux:外网域名防火墙设置导致下载失败
问题现象: 通过IE从服务器下载文件时,提示Can't read from connection: Connection reset by peer. 别的现场都是好的,只有该现场有这个问题.所以,一 ...
- java中io类型及成熟io框架
就io本身而言,概念上有5中模型:blocking I/O, nonblocking I/O, I/O multiplexing(select and poll), singal driven I/O ...
- poj-1273 Drainage Ditches(最大流基础题)
题目链接: Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 67475 Accepted ...
- HihoCoder1084: 扩展KMP(二分+hash,求T串中S串的数量,可以失配一定次数)
时间限制:4000ms 单点时限:4000ms 内存限制:256MB 描述 你知道KMP吗?它是用于判断一个字符串是否是另一个字符串的子串的算法.今天我们想去扩展它. 在信息理论中,在两个相同长度的字 ...
- kali-linux简单学习
一. curl --head 返回操作系统的版本 同样的Xprobe2可以和nmap一起返回操作系统的版本 nmap 直接加域名或者ip地址,比较权威判断操作系统版本,或者服务版本,以及开的端口 nm ...