在 SpringMVC 中,可以指定画面的跳转方式。使用 forward:
前缀实现请求转发跳转,使用 redirect:
前缀实现重定向跳转。有前缀的转发和重定向操作和配置的视图解析器没有关系,视图解析器不会进行拼串。
请求转发前缀—forward:
使用请求转发跳转方式,url 地址不会改变,一次请求一次相应,跳转到的地址可以获得 request 中的数据。
/**
* 请求转发
*/
@RequestMapping("/hello")
public String hello(HttpServletRequest request){
// 跳转到的地址能获得 name 中的值
request.setAttribute("name", "jack");
// 当前项目下的 hello.jsp 页面,请区别配置视图解析器的返回值,这里不会进行拼串
return "forward:/hello.jsp";
}
重定向前缀—redirect:
使用重定向跳转方式,url 地址会改变,两次请求两次相应,跳转到的地址不可以获得 request 中的数据(因为是两次请求)。
/**
* 重定向
*/
@RequestMapping("/hello")
public String hello(HttpServletRequest request){
// 跳转到的地址无法获得 name 中的值
request.setAttribute("name", "jack");
// 不需要添加当前的项目名,SpringMVC会自动的添加项目名
return "redirect:/hello.jsp";
}
由于重定向方式无法传递参数,解决方法请参考 RedirectAttributes 这一章节。