zoukankan      html  css  js  c++  java
  • 转发与重定向

      重定向:重新确定请求方向
        发送者:服务器 --> 响应(response)浏览器
        执行者:浏览器 --> 重新请求
      转发:当前请求未完成,服务器调用另一个程序继续完成整个请求
        服务器:当前程序需要获得请求调度器 RequestDispatcher
        forward:当调度器,协调多个servlet时,此方法返回最后一个servlet的页面输出内容。
      对比
        何时使用
          重定向:可以指定当前web项目的URL,也可以指定其他web资源
          转发:只能指定当前的web项目URL
        确定使用
          重定向:在第一次请求中设置值,在重定向后不能获取。两次请求,tomcat创建了两个request完成跳转功能,选重定向
          转发:设置的值可以在其他servlet或资源中使用。多个servlet需要传递数据时,现在转发。
       总结:
        请求次数
          重定向:请求2次,tomcat创建了两个request对象
          转发:请求1次,tomcat创建了2个request对象
          request --> org.apache.catalina.connector.RequestFacade -- HttpServletRequest --ServletRequest
          request --> org.apache.catalina.core.ApplicationHttpRequest
            class ApplicationHttpRequest extends HttpServletRequestWrapper {
            public class HttpServletRequestWrapper implements HttpServletRequest {
            ApplicationHttpRequest -- HttpServletRequestWrapper -- HttpServletRequest
            将第一个request中的内容,拷贝给第二个request。值相同
        浏览器地址栏是否修改
          重定向:修改,看到跳转后页面的内容
          转发:没有修改,看到的转发后最后一个servlet响应的内容
        request设置的值,是否共享
          重定向:数据不共享
          转发:数据共享

  • 相关阅读:
    [python] 类组合与聚合关系
    [python] 伪私有属性,防止变量名冲突
    [vim] 配置文件之常用命令模式
    [VIM] 编辑器---多行注释和取消注释及多行复制和黏贴
    [Visual Studio Code] 执行python
    [C] 编译器codeblocks安装注意
    字符串全排列
    集合全量子集提取
    random函数详解
    Solr常用命令总结
  • 原文地址:https://www.cnblogs.com/xuyatao/p/6652166.html
Copyright © 2011-2022 走看看