SpringMVC 中Controller 返回值的类型
程序员文章站
2024-03-24 08:23:58
...
spring mvc 支持如下的返回方式:ModelAndView, Model, ModelMap, Map, String, void。
一、ModelAndView
ModelAndView是将后台返回的数据传递给View层,同时包含一个要访问的View层的URL地址
ModelAndView作用
- 设置转向地址
- 将底层获取的数据进行存储(或者封装)
- 最后将数据传递给View
@RequestMapping("/hello")
public ModelAndView helloWorld() {
String message = "Hello World, Spring!";
return new ModelAndView("hello", "message", message);
}
通过ModelAndView构造方法可以指定返回的页面名称,也可以通过setViewName()方法跳转到指定的页面
@RequestMapping("/hello")
public ModelAndView helloWorld() {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("hello");
modelAndView.addObject("message", "Hello World, Spring!");
return modelAndView;
}
二、Map、Model、ModelMap
除了使用ModelAndView方式外。还可以使用Map、Model和ModelMap来向前台页面创造使用后面3种方式,都是在方法参数中,指定一个该类型的参数。例如:
@RequestMapping("/test")
public String test(Map<String,Object> map,Model model,ModelMap modelMap){
map.put("names", Arrays.asList("caoyc","zhh","cjx"));
model.addAttribute("time", new Date());
modelMap.addAttribute("city", "ChengDu");
modelMap.put("gender", "male");
return "hello";
}
JSP页面:
1、time:${requestScope.time }<br/>
2、names:${requestScope.names }<br/>
3、city:${requestScope.city }<br/>
4、gender:${requestScope.gender }
三、String
指定返回的视图页面名称,结合设置的返回地址路径加上页面名称后缀即可访问到。
注意:如果方法声明了注解@ResponseBody ,则会直接将返回值输出到页面。
@RequestMapping(value="/showdog")
public String hello1(){
return "hello";
}
@RequestMapping(value="/print")
@ResponseBody
public String print(){
String message = "Hello World, Spring MVC!";
return message;
}
返回json的例子(使用Jackson):
@RequestMapping("/load1")
@ResponseBody
public String load1(@RequestParam String name,@RequestParam String password) throws IOException{
System.out.println(name+" : "+password);
//return name+" : "+password;
MyDog dog=new MyDog();
dog.setName("小哈");dog.setAge("1岁");dog.setColor("深灰");
ObjectMapper objectMapper = new ObjectMapper();
String jsonString=objectMapper.writeValueAsString(dog);
System.out.println(jsonString);
return jsonString;
}
四、void
如果返回值为空,则响应的视图页面对应为访问地址
@RequestMapping("/index")
public void index() {
return;
}
对应的逻辑视图名为"index"上一篇: 分享一个Java查看对象内存大小的技巧
下一篇: 快速构建springboot项目