- 转向:请求转发是指将请求再转发到其他地址,转发过程中使用的是同一个请求,转发的地址栏内容不变。
- 重定向:是指由原请求地址重新定位到某个新地址,原有的请求失效,客户端看到的是新的请求返回的相应结果。
举例说明吧:
转发过程:
客户端对servlet1容器发起请求,但是servlet1想让servlet2进行一波客户端请求处理,于是就调用servlet协作让servlet2进行处理。
重定向过程:
客户端对servlet1容器发起请求,但是servlet1想让servlet2进行一波客户端请求处理,Servlet1调用sendRedirect()方法,将客户端的请求重定向到Servlet2,然后浏览器重新请求一次servlet2,servlet2进行请求处理
区别
- 请求次数不一样
- .响应之后,地址栏是否发生改变
- 重定向的响应结果可以“外包”出去;请求转发的相应结果只能靠同一个WEB应用中的组件(如另外一个servlet页面)
- 重定向对浏览器的请求直接作出响应,让浏览器去重新发出对另外一个URL的访问请求
- 请求转发中用户并不知道是谁完成了该工作,浏览器只知道发出请求和得到相应结果,并不知道服务器内部发生了转换行为