Servlet API中forward()与redirect()方法有什么区别呢?
转发:
http://www.java265.com/Servlet/202205/263.html
下文笔者讲述Servlet API中forward()与redirect()方法的区别,如下所示
区别1.从地址栏不同
forward是服务器请求资源 服务器直接访问目标地址的URL 把那个URL的响应内容读取过来 然后把这些内容再发给浏览器 浏览器根本不知道服务器发送的内容从哪里来的 所以它的地址栏还是原来的地址 redirect是服务端根据逻辑 发送一个状态码 告诉浏览器重新去请求那个地址 地址栏显示的是新的URL. 所以redirect等于客户端向服务器端发出两次request 同时也接受两次response
区别2.从数据共享
forward:转发页面和转发到的页面可以共享request里面的数据. redirect:不能共享数据. redirect不仅可以重定向到当前应用程序的其他资源,还可以重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源. forward方法只能在同一个Web应用程序内的资源之间转发请求.forward 是服务器内部的一种操作 redirect 是服务器通知客户端,让客户端重新发起请求 即:redirect 是一种间接的请求,但是你不能说"一个请求是属于forward还是redirect
3.从运用地方来说
forward: 一般用于用户登陆的时候,根据角色转发到相应的模块 redirect: 一般用于用户注销登陆时返回主页面和跳转到其它的网站等
4.从效率来说
forward:高 redirect:低