SpringMVC 中Controller 返回值的类型

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/scropio0zry/article/details/80819649

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"




猜你喜欢

转载自blog.csdn.net/scropio0zry/article/details/80819649
今日推荐