默认情况下,跳转到指定的View,使用的是请求转发。也可以显示的进行指出
此时,需在setViewName() 指定的视图前添加 forword: , 且此时的视图不会再与视图解析器中的前缀和后缀进行拼接
即必须写出相对于项目根的路径。故此时的视图解析器不再需要前缀和后缀
两个例子:
1.返回值为ModelAndView的重定向(jsp页面)
//返回值为 ModelAndView 的 重定向(到jsp页面)
@RequestMapping(value = "/dispatherJSP.do")
public ModelAndView method(String name,int age) { ModelAndView mv = new ModelAndView();
mv.addObject("name", name);
mv.addObject("age",age);
//需在setViewName() 指定的视图前添加 redirect,(默认添加的 forword)才能重定向到 指定资源
//重定向 后,是一个新的request,当把数据添加到Model中 时,会自动往路径后面添加上参数(a.jsp?name=&age=)
mv.setViewName("redirect:/a.jsp"); return mv;
}
2.返回值为String 的重定向(到Controller)
//返回值为 String 的 重定向 (到 Controller)
@RequestMapping(value = "/dispatherController.do")
public String method2(String name,int age,Model model) { //参数列表 中有Model,目前只看到这样使用,应该会自动 new 一个 实现类,然后 addAttribute model.addAttribute("name", name);
model.addAttribute("age", age); return "redirect:temp.do";
} //返回值为String 的 转发
@RequestMapping(value = "/temp.do")
public String method3(String name,int age) {
System.out.println("name = " + name);
System.out.println("age = " + age);
return "forward:/a.jsp";
}