A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

        在进行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对象,重定向会导致reque

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马