1、什么是请求转发?
请求转发,是一种服务器的行为,当客户端请求到达后,服务器进行转发,此时会将请求对象进行保存,地址栏中的 URL 地址不会改变,得到响应后,服务器端再将响应发送给客户端,从始至终只有一个请求发出。实现方式如下,达到多个资源协同响应的效果:
/**
* 请求转发,使用的是InternalResourceView
* @return 目标页
*/
@RequestMapping("/testInternalResourceView")
public String testInternalResourceView(){
return "forward:/testSuccess";
}
图解如下:A Servlet指向B Servlet来处理A Servlet的部分工作,并将结果返回给客户端。
地址栏的地址不会发生变化:
2、什么是请求重定向?
请求重定向是客户端的行为。一个web资源(服务器)收到客户端请求后,在某些情况下,对于客户端的请求,可能当次访问的Servlet无法完成全部的工作,需要将部分工作交给另一个Servlet来处理该请求。请求重定向会让客户端重新发起一个新的请求,所以对于客户端而言,客户端需要发送两次请求。通知浏览器去访问另外一个web资源,称之为请求重定向。
/**
* 请求重定向,使用的是redirectView
* @return 目标控制器方法
*/
@RequestMapping("/testRedirectView")
public String testRedirectView(){
return "redirect:/testSuccess";
}
图解如下:
当发起请求到当前的Servlet时,服务器通知浏览器需要重新定向一个新的Servlet,因此浏览器的地址栏发生了变化: