Servlet API中forward()与redirect()方法有什么区别呢?

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:低
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » Servlet API中forward()与redirect()方法有什么区别呢?