地址: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)**:转发是一种...
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...
再谈到forward和redirect的区别,它们都是HTTP响应的状态码。forward是由服务器内部完成的资源跳转,浏览器的URL不会改变,数据可以在请求之间共享,如session和request参数。而redirect是服务器告知浏览器重新发起...
标签包括springmvc、跳转页面、mvc、页面跳转、mvc控制器跳转页面等,这些标签都是与SpringMvc中的页面跳转问题相关的关键词。 主要内容解释 SpringMvc中的页面跳转问题可以分为两大类:使用ServletAPI实现页面跳转...
- **再谈EL(Expression Language)**:深入理解EL表达式的概念及其在JSP中的应用。 - **作用域**:回顾JSP中不同作用域的使用场景。 - **运算符**:学习EL表达式中的各种运算符。 #### 第14章 生命周期 - **生命...