SpringMvc处理器方法的返回值

1、返回ModelAndView

ModelAndView中的视图会经过你视图解析器处理得到真实的jsp文件页面并且跳转。

@RequestMapping("test01")
    public ModelAndView test01() {
        ModelAndView mv = new ModelAndView();
        // 携带数据
        mv.addObject("teamName", "牛逼");
        // 页码转载
        mv.setViewName("result");// 经过视图解析器处理: /jsp/result.jsp
        return mv;
    }

2、返回字符串

默认还是会经过视图解析器,将该字符串转为对应的jsp页面地址以及跳转

@RequestMapping("test02")
    public String test02(HttpServletRequest req) {
        Team team = new Team();
        team.setLocation("henan");
        team.setTeamId(12);
        team.setTeamName("AE");
        // 携带数据
        req.setAttribute("team", team);
        req.getSession().setAttribute("team", team);
        // 页面跳转
        return "result";
    }

3、返回对象类型

任意对象类型都可以返回,而是直接作为数据返回后直接展示,一般都是前端发起ajax异步请求
返回的时候需要添加注解@ResponseBody ,将对象转化为你json格式的数据放入到响应体,所以需要引入json依赖

前端可以通过ajax进行请求,然后对返回值进行获取

加上@ResponseBody注解之后,返回值不会经过视图解析器,所以返回值只是单纯的字符串,不会进行页面的跳转。

<dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.9.0</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.0</version>
        </dependency>
    @ResponseBody
    @RequestMapping("test03-1")
    public Integer test031(HttpServletRequest req) {
        return 66;
    }
    @ResponseBody
    @RequestMapping("test03-2")
    public String test032(HttpServletRequest req) {
        return "test"; // 直接返回数据,分返回字符串区别开
    }
    @ResponseBody
    @RequestMapping("test03-3")
    public Team test033(HttpServletRequest req) {
        Team team = new Team();
        team.setLocation("南阳");
        team.setTeamId(12);
        team.setTeamName("AE");
        return team;
    }
    @ResponseBody
    @RequestMapping("test03-4")
    public List<Team> test034(HttpServletRequest req) {
        List<Team> teams = new ArrayList<Team>();
        for(int i = 1;  i < 5; i ++){
            Team team = new Team();
            team.setLocation("南阳" + i);
            team.setTeamId(12+i);
            team.setTeamName("AE"+i);
            teams.add(team);
        }
        return teams;
    }
    @ResponseBody
    @RequestMapping("test03-5")
    public Map<String, Team> test035(HttpServletRequest req) {
        Map<String, Team> teams = new HashMap<String, Team>();
        for(int i = 1;  i < 5; i ++){
            Team team = new Team();
            team.setLocation("南阳" + i);
            team.setTeamId(12+i);
            team.setTeamName("AE"+i);
            team.setDate(new Date());
            teams.put(team.getTeamId()+"", team);
        }
        return teams;
    }

4、无返回值

    //通过 HttpServletRequest 做服务端跳转
    @RequestMapping("test04-1")
    public void test041(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("直接使用HttpServletRequest进行服务器转发");
        req.getRequestDispatcher("/jsp/OK.jsp").forward(req, resp);
    }
    //通过 HttpServletResponse 做重定向
    @RequestMapping("test04-2")
    public void test042(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("直接使用HttpServletResponse进行客户端重定向");
        resp.sendRedirect("/jsp/OK.jsp");
    }
    //通过 HttpServletResponse 给出响应
    @RequestMapping("test04-3")
    public void test043(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setCharacterEncoding("UTF-8");
        resp.setContentType("text/html:charset=utf-8");
        System.out.println("返回void类型测试---直接返回字符串");
        PrintWriter writer = resp.getWriter();
        writer.write("返回void类型测试---直接返回字符串");
        writer.flush();
        writer.close();
    }
    //也可以自己手动指定响应头去实现重定向:
    @RequestMapping("test04-4")
    public void test044(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setStatus(302);
        resp.setHeader("Location", "/jsp/OK.jsp");
    }

相关推荐

  1. SpringMvc处理器方法返回

    2024-04-04 06:20:06       34 阅读
  2. SpringMVC controller方法返回见解3

    2024-04-04 06:20:06       49 阅读
  3. Spring MVC controller方法返回

    2024-04-04 06:20:06       56 阅读
  4. C#返回多个方法

    2024-04-04 06:20:06       29 阅读
  5. Spring MVC中方法返回!!!

    2024-04-04 06:20:06       59 阅读
  6. arthas查看方法返回

    2024-04-04 06:20:06       35 阅读
  7. SpringMVCWebMvcConfigurer及返回

    2024-04-04 06:20:06       36 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-04 06:20:06       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-04 06:20:06       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-04 06:20:06       82 阅读
  4. Python语言-面向对象

    2024-04-04 06:20:06       91 阅读

热门阅读

  1. 《迭代器模式(极简c++)》

    2024-04-04 06:20:06       36 阅读
  2. 常见网络问题的概述

    2024-04-04 06:20:06       29 阅读
  3. 通过TCP或UDP向某个IP和端口发送数据

    2024-04-04 06:20:06       33 阅读
  4. 新兴AI技术及其创业机会

    2024-04-04 06:20:06       34 阅读
  5. 【开源产品部署系列】一、RuoYi-Radius搭建流程

    2024-04-04 06:20:06       26 阅读
  6. Pytorch torch.utils.data.DataLoader 用法详细介绍

    2024-04-04 06:20:06       34 阅读
  7. Ubuntu 如何移动硬盘在所有账号都分享

    2024-04-04 06:20:06       38 阅读
  8. C/C++混合项目,程序运行报错:未定义函数符号

    2024-04-04 06:20:06       36 阅读