forward 和 redirect的区别?

参考答案

forward和redirect的请求流程图:

由图可以看出:

  1. forward 是一次完整的请求和响应,是服务器内控制权的转发。可以由servlet接收请求,但把返回响应的权利通过forward给jsp来完成

  2. redirect会在第一次响应返回时用状态码302和一个location头来告知浏览器,再发一个请求给location所指向的url地址,整个流程需要两次请求

  3. 表现形式上: forward 转发浏览器地址栏地址总是第一个访问的servlet地址,转发地址对浏览器是隐藏的;而redirect,浏览器的地址栏地址是最后转发页面的目标地址,对浏览器可见。

  4. forward 对应一次请求,因此可以利用request作用域传递信息;而 redirect 对应两次请求,只能使用session作用域或在重定向地址后面带参的方式来传递信息。

  5. redirect后的url可以是站外地址,这个特性常常用来与第三方应用做交互调用;而 forward 仅能做本站转发,不能访问站外资源。


results matching ""

    No results matching ""