打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
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一个),以及响应头!

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
forward与include转发问题 - yinyanshuan的日志 - 网易博客
重定向和转发
Servlet请求转发 RequestDispatcher与sendRedirect - ...
jsp/servlet中 forward, include, reDirect 之间的区别
Java Web开发面试题一套(4)
jsp中forword和sendRedirect的区别
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服