欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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"