Spring MVC Ajax Json交互配置

Ajax Json交互分为两个方向:

  1. 前端到后台:前端ajax发送json格式字符串,后台直接接收为pojo参数,后台使用@RequstBody;
  2. 后台到前端:后台直接返回pojo对象,前端接收未json对象或者字符串,后台使用注解@ResponseBody;

@ResponseBody注解

@ResponseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换成指定格式后,写入到response对象的body区,通常用来返回JSON数据或者XML数据。注意:在使用此注解之后不会在走视图解析器,而是直接将数据写入到输入流中,它的效果等同于通过response对象输出指定格式的数据。

Spring MVC 使用JSON交互

引入json相关jar包

Spring MVC想要使用JSON进行数据交互,需要引入基础的JSON依赖包

    <!--json数据交互所需jar,start-->
    <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>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
      <version>2.9.0</version>
    </dependency>
    <!--json数据交互所需jar,end-->

代码事例

  • 前端页面及js代码
  1. 引入jquery.min.js
    将ajax需要使用到的jquery.min.js放置到WEB-INF目录中


    jquery.min.js
  2. Spring MVC 处理静态资源
    修改springmvc.xml文件,添加 mvc:resources 标签,让SpringMVC框架自己处理静态资源,否则前端ajax的js无法使用jquery.min.js
        <!--静态资源配置,方案二,SpringMVC框架自己处理静态资源
        mapping:约定的静态资源的url规则
        location:指定的静态资源的存放位置-->
        <mvc:resources location="/WEB-INF/js/" mapping="/js/**"/>
  1. jsp页面代码
    <div>
        <h2>Ajax json交互</h2>
        <fieldset>
            <input type="button" id="ajaxBtn" value="ajax提交"/>
        </fieldset>
    </div>
  1. ajax js请求代码
<head>
    <title>SpringMVC 测试页</title>


    <script type="text/javascript" src="/js/jquery.min.js"></script>

    <script>
        $(function () {
            $("#ajaxBtn").bind("click",function () {
                // 发送ajax请求
                $.ajax({
                    url: '/demo/handle07',
                    type: 'POST',
                    data: '{"id":"1","name":"李四"}',
                    contentType: 'application/json;charset=utf-8',
                    dataType: 'json',
                    success: function (data) {
                        alert(data.name);
                    }
                })
            })
        })
    </script>


    <style>
        div{
            padding:10px 10px 0 10px;
        }
    </style>
</head>
  • 后台Handler代码
    前端通过ajax向后台发送请求,将user对象转换成JSON字符串请求到后台的Handler。后台的Handler收到JSON数据后,通过@RequestBody注解将JSON字符串转换成User对象,后台Handler修改User对象后,通过@ResponseBody注解将user对象转换成JSON字符串,响应到页面。
    /**
     * 添加@ResponseBody之后,不再走视图解析器那个流程,
     * 而是等同于response直接输出 数据
     */
    @RequestMapping("/handle07")
    public @ResponseBody User handle07(@RequestBody User user) {
        System.out.println(user);
        // 业务逻辑处理,修改name为张三丰 
        user.setName("张三丰");
        return user;
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容