Servlet中forward和redirect的区别:
1)从地址栏显示看
forward是服务器请求资源,服务器直接访问目标地址的URl,把那个URl的响应内容读取过来,
然后把这些信息发送给浏览器。浏览器根本不知道服务器发送的内容从哪里来的,所以forward(转发)
发送数据地址栏不变。
redirect是服务器端根据业务逻辑发送状态码,重新告诉浏览器去请求哪一个地址,所以地址栏发生改变。
2)从共享的数据看
forward :转发页面和转发到的页面可以共享request里面的数据,forward会将request state ,bean等信息带到下一个jsp页面。
redirect:不能共享数据,但是可以重定向到当前应用程序的其他资源,也可以重定向到同一个站点上的其他应用程序的资源。
3)从运用的地方来看
forward:一般用于用户登录的时候,根据角色转发到相应的模块。
redirect:一般用户注销登录时,返回主页和跳转到其他站点等。
4)从效率来看
forward的效率比redirect的高,forward是服务器内部的转发,而redirect则是服务器收到请求后发送一个状态给客户,客户再请求一次,其中经过两次网络通信。