Spring MVC 重定向和转发
重定向和转发
重定向经过客户端,而转发没有,因此相对来说转发更快速。但有时采用重定向更方便,如:
- 重定向到外部网站;
- 避免用户重新加载页面时再次调用同样的动作。
return "redirect:/view/"+saveUser.getId();
这里使用重定向来防止当前用户重新加载页面时’’‘saveUser’’'被二次调用。
但是使用重定向无法轻松地给目标页面传值,因此,在Spring3.1后提供了Flash属性,详情见后文。
常用处理方式
Controller 视图方法间的跳转,无非就是带参跳转和不带参跳转。常用的方法有通过 String 映射 RequestMapping 实现重定向,或者通过 ModelAndView
对象,又或者是 RedirectView
对象,下面逐一说明。
String 重定向
是 return 映射到另一个 Controller 方法的字符串。如果有请求参数,就拼接在 RequestMapping 映射的字符串后面。
// 返回字符串映射的方式
@RequestMapping("hello")
public String hello(HttpServletRequest req, HttpServletResponse resp) {
doSomething();
return "redirect:/bye";
// return "redirect:/bye?username=sudoz";
}