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

SpringMVC中控制器方法可以返回的数据类型

程序员文章站 2022-05-07 18:54:09
1.返回ModelAndView @RequestMapping("/test01.action") public ModelAndView test01(){ ModelAndView mav = new ModelAndView(); mav.addObject("k1","v1"); mav.addObject("k2","v2"); mav.setViewName("my01test01"); ret...

1.返回ModelAndView

    @RequestMapping("/test01.action")
    public ModelAndView test01(){
        ModelAndView mav = new ModelAndView();
        mav.addObject("k1","v1");
        mav.addObject("k2","v2");
        mav.setViewName("my01test01");
        return mav;
    }

2.返回字符串视图名

    @RequestMapping("/test02.action")
    public String test02(Model model){
        model.addAttribute("k1","v1");
        model.addAttribute("k2","v2");
        return "my01test02";
    }

3."forward:xxx"字符串,实现请求转发

    @RequestMapping("/test03.action")
    public String test03(){
        return "forward:/index.jsp";
    }

4."redirect:xxx"字符串,实现请求重定向

    @RequestMapping("/test04.action")
    public String test04(){
        return "redirect:/index.jsp";
    }

5.返回void

当控制器方法的返回值类型为void时,SpringMVC会自动采用默认视图名作为视图名称使用
所谓的默认视图名 等于 将当前控制器方法路径 去除后缀 得到的名称
/my01/test05.action --> /my01/test05

    @RequestMapping("/test05.action")
    public void test05(){
    }

6.被@ResponseBody修饰的控制器方法返回String类型

被@ResponseBody注解修饰的控制器方法,返回任何数据都会加入到响应的实体内容中被发送给浏览器

可以为响应数据设置编码防止乱码

    @ResponseBody
    @RequestMapping(value="/test06.action",produces = "text/html;charset=utf-8")
    public String test06(HttpServletResponse response){
        return "abc中xyz";
    }

7.被@ResponseBody修饰的控制器方法返回json数据

被@ResponseBody注解修饰的控制器方法,返回任何数据都会加入到响应的实体内容中被发送给浏览器
如果返回的是一个自定义对象,则自定义对象中的数据会转为json格式后发送给浏览器

@ResponseBody
    @RequestMapping(value="/test07.action")
    public User test07(HttpServletResponse response){
        return new User("zs",19,"bj");
    }

8.其他情况

除了以上案例讲解的返回值之外,返回任何数据都会被加到Model中作为模型数据使用,其值为返回值,其键为当前方法返回值类型首字母转小写之后采用默认视图(当前控制器方法访问路径去后缀)名作为本次访问结束后的视图名称来使用(对比7没有@ResponseBody)

    @RequestMapping("/test08.action")
    public User test08(){
        return new User("zl",99,"sh");
    }

 

本文地址:https://blog.csdn.net/qq_32224047/article/details/107140778