`
wfwkiss
  • 浏览: 127099 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

再谈forward与redirect

阅读更多
地址:http://tjc.iteye.com/blog/371092
1.从地址栏显示来说

forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.
redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.

forward 是服务器内部重定向,程序收到请求后重新定向到另一个程序,而客户机并不知晓;forward会将   request  state、bean、等信息带到下一个jsp页面;
使用getAttribute()来取得前一个jsp所放的信息.
redirect  是服务器收到请求后发送一个状态头给客户,客户将再次请求,就有两次网络通行的来往。redirect 是送到客户端后再次request,因此上一个jsp的信息不被保留

2.从数据共享来说

forward:转发页面和转发到的页面可以共享request里面的数据.
redirect:不能共享数据.

redirect不仅可以重定向到当前应用程序的其他资源,还可以重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源.
forward,方法只能在同一个Web应用程序内的资源之间转发请求.
在平时的时候,我们是不可以直接用url来访问WEB-INF目录下的资源的,但是用forward就可以访问得到或者用其它的办法(只要是在服务器执行就应该行了吧).

forward是不能夸context转发的(例如:/context1/url 的不能用forward 转发到 /context2/url 中去),但是redirect就可以(因为它是浏览器端转发的,是服务器端发送一个http头部信息,浏览器根据这个信息再进行转发,但有一些情况要注意,例如是不同的端口号或者ip的url话,请用绝对url,不要用相对的,否则会出问题).

3.从运用地方来说

forward:一般用于用户登陆的时候,根据角色转发到相应的模块.
redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等.

forward比较好的地方就是forward可以把对象传过去,redirect只能传字符串.


4.从效率来说

forward:高.
redirect:低.


5. forward不会走过滤器(Servlet 2.4 開始forward可以走过滤器, 不過要響web.xml設定) 如果是用forward转发的话,因为是内部(容器中)转发的,所以也就不用再经过过滤器(filter)的过滤了(如果要是再经过,可能会造成无限递归),但是redirect就要(因为它是多次向服务器请求).
分享到:
评论

相关推荐

    小谈“转发与重定向”

    转发(Forward)与重定向(Redirect)是Web开发中两种常见的页面跳转方式,它们各自有着不同的应用场景与特点。为了更好地理解这两种机制,我们首先来了解一下它们的基本概念。 1. **转发(Forward)**:转发是一种...

    网页教程《跟姐姐学JSP》

    13.1. 再谈el(Expression Language) 13.2. 作用域 13.3. 运算符 14. 生命周期 14.1. 生命周期 14.2. 线程模型 14.3. 在jsp中定义类变量 14.4. jsp九大默认对象 15. 分页 15.1. 数据库分页 15.2. 使用jstl...

    08年9月 帆都软件面试 笔试题

    再谈到forward和redirect的区别,它们都是HTTP响应的状态码。forward是由服务器内部完成的资源跳转,浏览器的URL不会改变,数据可以在请求之间共享,如session和request参数。而redirect是服务器告知浏览器重新发起...

    浅谈Springmvc中的页面跳转问题

    标签包括springmvc、跳转页面、mvc、页面跳转、mvc控制器跳转页面等,这些标签都是与SpringMvc中的页面跳转问题相关的关键词。 主要内容解释 SpringMvc中的页面跳转问题可以分为两大类:使用ServletAPI实现页面跳转...

    jsp入门教程

    - **再谈EL(Expression Language)**:深入理解EL表达式的概念及其在JSP中的应用。 - **作用域**:回顾JSP中不同作用域的使用场景。 - **运算符**:学习EL表达式中的各种运算符。 #### 第14章 生命周期 - **生命...

Global site tag (gtag.js) - Google Analytics