重定向与转发

本文详细解释了HTTP重定向与转发的概念及应用场景。重定向由服务器通知浏览器改变请求路径,适用于跨域跳转;转发则在服务器内部进行,用于多模块间的数据传递,保持单次会话状态。

* 重定向:重新确定请求方向
        * 发送者:服务器 --> 响应(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设置的值,是否共享
                * 重定向:数据不共享
                * 转发:数据共享

转载于:https://www.cnblogs.com/Lanyuxuan/p/5295187.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值