Spring Mvc 有如下的几种返回方式:
ModelAndView,
Model,
ModelMap,
Map,
View,
String,
void
例子在类开始之前加上了如下注解:
@Controller
@RequestMapping("/adController")
一:ModelAndView
@RequestMapping("/show") public ModelAndView show(){ ModelAndView mav = new ModelAndView(); mav.setViewName("/admin/show"); mav.addObject("aaa", "11111"); return mav; }
请求路径:项目路径/adController/show.do
返回视图:项目路径/admin/show.jsp
通过ModelAndView构造方法可以指定返回的页面名称,也可以通过setViewName()方法跳转到指定页面,使用addObject()设置需要返回的值。
在页面上可以通过El表达式${aaa}获取!
二:MAP
@RequestMapping("/show2") public Map<String,String> getMap(){ System.out.println("show2"); Map<String,String> map = new HashMap<String, String>(); map.put("key1", "111"); map.put("key2", "222"); return map; }
请求路径:项目路径/adController/show2.do
返回视图:项目路径/adController/show2.jsp
URL = prefix前缀+视图名称+suffix后缀组成。
在前台页面也可以根据${key1}来获取相应的值。
三:String
@RequestMapping("/show3") public String getString(ModelMap model) { model.addAttribute("aaa", "1111"); model.addAttribute("bbb","222"); return "center"; }
请求路径:项目路径/adController/show3.do
返回路径:项目路径/center.jsp
URL = prefix前缀+/return的值+suffix组成
可以通过ModelMap构建返回的参数,该ModelMap不需要自己创建。
如果加上了@ResponseBody注解,则会直接将输出值返回输出到页面。
页面会直接显示 “center”
四:Void
@RequestMapping("/show4") public void getVoid() { }
请求路径:项目路径/adController/show3.do
返回路径:对于请求路径 后缀为 .jsp
同样也可以构造ModelMap返回参数
小结:
1、使用String作为请求处理方法的返回类型是比较通用的方法,这样返回的逻辑视图名不会和请求的URL绑定,具有很大的灵活性,而模型数据也可以根据ModelMap构造控制。
2、使用Void,Map 返回对应的逻辑视图名称真实url为:prefix前缀+视图名称 +suffix后缀组成。