转发与重定向

        在进行web开发中,通常要进行servlet和servlet之间的相互跳转。servlet的跳转可以将一个项目的模块进行划分,这样更加方便了开发人员的操作。

        servlet之间的跳转分为两种,一种是转发(forward),另一种是重定向(redirect)。转发,指转移发放,指的是文件的批转发送;重定向,就是通过)就是通过各种方法将各种网络请求重新定个方向转到其它位置(如:网页重定向、域名的重定向、路由选择的变化也是对数据报文经由路径的一种重定向)。

转发(forward)

        容器中控制权的转向,是服务器请求资源,直接访问目标地址的URL,然后把URL的相应内容读取过来,然后发送给浏览器。浏览器不知道服务器发送的内容来自哪里,浏览器的地址不变。

        转发是通过RequestDispatcher对象的forward(HttpServletRequest req,HttpServletResponse resp)来实现的。

重定向(rediect)

        服务器端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,因此从浏览器的地址栏中可以看到跳转后的链接地址,很明显redirect无法访问到服务器保护起来资源,但是可以从一个网站redirect到其他网站。

        重定向是通过HttpServletResponse对象调用其sendRediect(String location)方法实现的。

转发和重定向的比较

        使用转发跳转时,跳转是在服务器端实现的,客户端浏览器并不知道该浏览器的动作。转发具有以下的特点:(1)不会改变浏览器的地址栏    (2)共享同一个request    (3)只能在同一个web应用中使用。

        使用重定向跳转时,跳转是在客户端实现的,实际上客户端浏览器请求了两次服务器。重定向具有以下的特点:(1)会改变浏览器地址    (2)不会共享request    (3)可以重定向到任意的URL。

        总的来说就是,转发是服务器行为,重定向是客户端行为。可以从请求次数和请求资源地址这两个方面来进行理解它们之间的区别。(1)请求次数:重定向行为是做了两次请求,以及产生了两个request对象,重定向会导致request对象信息丢失。转发是做了一次请求,浏览器地址栏一直是第一次请求的地址,转发是服务器内部request/response控制权的移交。(2)请求资源地址:重定向是weib自荐可以将请求重定向到任意一个url,而不仅仅是同一个应用,重定向的源组件与目标组件不公用同一个HttpServletRequest对象,因此不能在request范围内共享数据。转发的源组件与目标组件必须在同一个应用总,两者可以在request范围内共享数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值