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(){ Map map=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可以设置返回的视图名称。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。