12.SpringMVC核心技术-请求转发和重定向

默认情况下,跳转到指定的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     }
原文地址:https://www.cnblogs.com/xuzekun/p/7410902.html