zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    洛谷 P4001 [ICPC-Beijing 2006]狼抓兔子
    杂题20201201
    杂题20210103
    杂题20201010
    杂题20200928
    ACL1 Contest 1 简要题解
    杂题20200906
    杂题20200623
    USACO2020DEC Gold/Platinum 解题报告
    CSP-S2020游记
  • 原文地址:https://www.cnblogs.com/fatcat132006/p/4089840.html
Copyright © 2011-2022 走看看