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