forward 和 redirect的区别?
参考答案
forward和redirect的请求流程图:
由图可以看出:
forward 是一次完整的请求和响应,是服务器内控制权的转发。可以由servlet接收请求,但把返回响应的权利通过forward给jsp来完成
redirect会在第一次响应返回时用状态码302和一个location头来告知浏览器,再发一个请求给location所指向的url地址,整个流程需要两次请求
表现形式上: forward 转发浏览器地址栏地址总是第一个访问的servlet地址,转发地址对浏览器是隐藏的;而redirect,浏览器的地址栏地址是最后转发页面的目标地址,对浏览器可见。
forward 对应一次请求,因此可以利用request作用域传递信息;而 redirect 对应两次请求,只能使用session作用域或在重定向地址后面带参的方式来传递信息。
redirect后的url可以是站外地址,这个特性常常用来与第三方应用做交互调用;而 forward 仅能做本站转发,不能访问站外资源。