SpringMVC Controller 返回值的可选类型详解
springmvc支持如下的返回方式:ModelAndView,Model,ModelMap,Map,View,String,void。
ModelAndView
@RequestMapping("/hello")
publicModelAndViewhelloWorld(){
Stringmessage="HelloWorld,Spring3.x!";
returnnewModelAndView("hello","message",message);
}
通过ModelAndView构造方法可以指定返回的页面名称,也可以通过setViewName()方法跳转到指定的页面
Map
@RequestMapping("/demo2/show")
publicMapgetMap(){
Mapmap=newHashMap();
map.put("key1","value-1");
map.put("key2","value-2");
returnmap;
}
在jsp页面中可直通过${key1}获得到值,map.put()相当于request.setAttribute方法。
View
可以返回pdfexcel等,暂时没详细了解。
String
指定返回的视图页面名称,结合设置的返回地址路径加上页面名称后缀即可访问到。
注意:如果方法声明了注解@ResponseBody,则会直接将返回值输出到页面。
@RequestMapping(value="/showdog")
publicStringhello1(){
return"hello";
}
@RequestMapping(value="/print")
@ResponseBody
publicStringprint(){
Stringmessage="HelloWorld,SpringMVC!";
returnmessage;
}
返回json的例子(使用Jackson):
@RequestMapping("/load1")
@ResponseBody
publicStringload1(@RequestParamStringname,@RequestParamStringpassword)throwsIOException{
System.out.println(name+":"+password);
//returnname+":"+password;
MyDogdog=newMyDog();
dog.setName("小哈");dog.setAge("1岁");dog.setColor("深灰");
ObjectMapperobjectMapper=newObjectMapper();
StringjsonString=objectMapper.writeValueAsString(dog);
System.out.println(jsonString);
returnjsonString;
}
void
如果返回值为空,则响应的视图页面对应为访问地址
@RequestMapping("/index")
publicvoidindex(){
return;
}
对应的逻辑视图名为"index"
小结:
1.使用String作为请求处理方法的返回值类型是比较通用的方法,这样返回的逻辑视图名不会和请求URL绑定,具有很大的灵活性,而模型数据又可以通过ModelMap控制。
2.使用void,map,Model时,返回对应的逻辑视图名称真实url为:prefix前缀+视图名称+suffix后缀组成。
3.使用String,ModelAndView返回视图名称可以不受请求的url绑定,ModelAndView可以设置返回的视图名称。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。