Spring MVC三种返回方式

spring mvc处理方法支持如下的返回方式:ModelAndView, Model, ModelMap, Map,View, String, void。 

下面一一进行说明: 

1、ModelAndView 
Java代码 收藏代码 

@RequestMapping("/message") 
public ModelAndView message(HttpServletRequest request, 
HttpServletResponse response) throws Exception { 
ModelAndView mav = new ModelAndView("demo/message"); 
mav.addObject("msg", "okle"); 
return mav; 

返回的逻辑视图名是 demo/message 
通过ModelAndView构造方法可以指定返回的页面名称,也可以通过setViewName()方法跳转到指定的页面 , 使用addObject()设置需要返回的值。 

2、Map 
Java代码 收藏代码 
@RequestMapping("/demo/show") 
public Map<String, String> showMap() { 
Map<String, String> map = new HashMap<String, String>(); 
map.put("key1", "value1"); 
map.put("key2", "value2"); 
return map; 

这个对应的逻辑视图名是demo/show,也就是请求url 
在jsp页面中可直通过${key1}获得到值, map.put()相当于request.setAttribute方法。 

3-1、String 指定返回的视图页面名称 
注意:如果方法声明了注解@ResponseBody ,则会直接将返回值输出到页面。 

这个是使用jackson直接输出的 

例如: 
Java代码 收藏代码 
@RequestMapping("/hello") 
@ResponseBody 
public String helloWorld() { 
return "Hello World"; 


上面的结果会将文本"Hello World "直接写到http响应流。 

3-2、 如果方法没有被标注@ResponseBody,返回值就是视图名 

Java代码 收藏代码 
@RequestMapping("/welcome") 
public String welcome() { 
return "center"; 


对应的逻辑视图名为“center”,URL= prefix前缀+视图名称 +suffix后缀组成。 

4、void 如果返回值为空,则响应的视图页面对应为访问地址 
Java代码 收藏代码 
@RequestMapping("/welcome") 
public void welcome() {} 

此例对应的逻辑视图名为"welcome"。 

小结: 
1.使用 String 作为请求处理方法的返回值类型是比较通用的方法,这样返回的逻辑视图名不会和请求 URL 绑定,具有很大的灵活性,而模型数据又可以通过 ModelMap 控制。 
2.使用void,map,Model 时,返回对应的逻辑视图名称就是请求url,仍然遵循:prefix前缀+视图名称 +suffix后缀组成。 
3.使用String,ModelAndView返回视图名称可以不受请求的url绑定,ModelAndView可以设置返回的视图名称。

猜你喜欢

转载自blog.csdn.net/m0_37154839/article/details/82933687
今日推荐