zoukankan      html  css  js  c++  java
  • SpringMVC 之 @ResponseBody 和 @RequestBody

    前后端进行数据交互的时候,规定数据交互的格式,使数据交互规范而统一,是极为重要的事。一般而言,我们会采用 JSON 进行数据交互。本文暂不讨论如何 JSON 的格式规范,而是解析一下如何在 SpringMVC 中方便快捷的使用 JSON 进行数据交互。那就是使用两大注解: @ResponseBody 和 @RequestBody 。

    pom.xml
    我采用 Maven 来管理构建项目,要使用 @ResponseBody 和 @RequestBody ,要先在 pom.xml 里引入 jackson 依赖包。

    <!--JSON交互-->
    <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.5.2</version>
    </dependency>
    <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.5.2</version>
    </dependency>


    额,至于 SpringMVC 具体使用哪个版本就需要你自己选择了。

    开启 < mvc:annotation-driven />
    为什么要开启 < mvc:annotation-driven /> ?
    相当于注册了 DefaultAnnotationHandlerMapping 和 AnnotationMethodHandlerAdapter 两个 bean ,配置一些 messageconverter 。即解决了 @Controller 注解的使用前提配置。而我们在使用 SpringMVC 时,一定会用到 @Controller 注解,如果没有 < mvc:annotation-driven/> ,那么所有的 Controller 可能就没有解析。

    Java 代码示例
    实体类:

    public class User {
    private String name;
    private int id;
    public String getName() { return name;}
    public void setName(String name) { this.name = name;}
    public int getId() { return id;}
    public void setId(int id) { this.id = id;}
    }


    Controller:

    @Controller
    @RequestMapping("/json")
    public class Controller {
    
    //仅发送 JSON ,即仅使用 @ResponseBody 注解
    @RequestMapping("/justResponse")
    @ResponseBody
    public Map<String, Object> justResponse(Model model) throws Exception {
    Map<String, Object> map =new HashMap<String, Object>();
    User user = new User();
    user.setName("Test");
    user.setId(123);
    map.put("string", "string");
    map.put("user", user);
    return map;
    }
    
    //仅接收 JSON ,即仅使用 @RequestBody注解
    @RequestMapping("/justRequest")
    public User justRequest(@RequestBody User user) throws Exception {
    System.out.println("This is " + user.name);
    return user;
    }
    
    //收发 JSON ,即使用 @ResponseBody 和 @RequestBody
    @RequestMapping("/responseAndRequest")
    @ResponseBody
    public Map<String, Object> responseAndRequest(@RequestBody User user) throws Exception {
    System.out.println("This is " + user.name);
    Map<String, Object> map =new HashMap<String, Object>();
    map.put("string", "string");
    map.put("user", user);
    return map;
    }
    }

    之所以会有 Map< String, Object > ,是因为数据交互时会存在多个对象,这样可能更贴合实际。以及还有一点,确保数据格式为 JSON ,不过使用 XML 也可以,以上两个注解也支持 XML 。

  • 相关阅读:
    docker save docker load
    Vue 开发线路 资料 汇总
    electron 开发拆坑总结
    mysqldbcopy 数据库复制工具
    用rsync命令删除大文件夹
    linux nc,nmap,telnet ,natstat命令
    搭建云版容器版本 需要的基础软件 安装工具
    phantomjs 前端测试工具
    消息列队 php 基于redis 实现
    部分安卓机器【小米手机】,文字显示不全
  • 原文地址:https://www.cnblogs.com/cangqinglang/p/10083650.html
Copyright © 2011-2022 走看看