SpringMVC json数据交互

SpringMVC 与json数据交互

json数据格式在前端框架中较常用,json格式比较简单,解析还比较方便

2.1进行json交互的两种情况

  1. 客户端请求的是key/value,contentType=application/x-www-form-urlencoded默认,不需要使用
    @RequestBody。但仍然需要使用@ResponseBody注解将java对象转成json串输出
  2. 客户端请求的是json字符串,需要指定contentType=application/json,需要使用@RequestBody注解将
    json串转成java对象。并使用@ResponseBody注解将java对象转成json串输出

2.2 导入jackson包

maven依赖配置:

<!-- jackson --> 
<dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-core</artifactId> 
    <version>2.9.5</version> 
</dependency> 
<dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-databind</artifactId> 
    <version>2.9.5</version> 
</dependency> 
<dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-annotations</artifactId> 
    <version>2.9.5</version> 
</dependency> 

注意:spring4.x须使用jackson2.x版本,而spring3.x版本使用jackson1.x版本

2.3 配置json转换器

使用<mvc:annotation-driven />即可

2.4 json交互测试

1.请求key/value

页面js:

<script src="js/jquery-3.3.1.min.js" type="text/javascript" charset="utf-8"></script>
    <script >
        function keyvlaue(){
         $.ajax({
             url : "keyValue.do",
             type : "post",
             contentType : "application/x-www-form-urlencoded",
             data : {
                 empno : 1001,
                 ename : "tom",
                 job : "clerk",
                 salary : 2580
             },
             success : function(data){
                 alert(data);
             }
         });
         }
    </script>
</head>
<body>
<button  onclick="keyvlaue()" >测试 key/value的方法</button>
</body>

Controller方法:

@PosttMapping("/keyValue.do") 
public void testKeyValue(Emp emp, HttpServletResponse response) throws IOException 
{ 
    System.out.println("提交数据为key/value格式..."); 
    System.out.println(emp); 
    response.getWriter().write("ok"); 
} 

测试结果:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.请求json字符串

页面js:

function jsonString(){
         $.ajax({
            url : "jsonString.do",
            type : "post",
            contentType : "application/json",
            data : JSON.stringify({
                    empno : 1002,
                    ename : "jerry",
                    job : "clerk",
                    salary : 3690
                }),
            success : function(data){
                alert(data);
                }
         });
    }


<button  onclick="jsonString()" >测试 请求json字符串的方法</button>

Controller方法:

@PosttMapping("/jsonString.do") 
public void testJsonString(@RequestBody Emp emp, HttpServletResponse response) 
throws IOException { 
    System.out.println("提交数据为jsonString格式..."); 
    System.out.println(emp); 
    response.getWriter().write("ok"); 
} 

测试结果:

在这里插入图片描述
在这里插入图片描述

3.响应json对象

页面js:

 function responseEntity(){
         $.ajax({
            url : "responseEntity.do",
            type : "post",
            success : function(data){
             var html = "员工编号:" + data.empno;
                html += " 员工姓名:" + data.ename;
                html += " 员工岗位:" + data.job;
                html += " 员工工资:" + data.salary;
                $("#info").html(html);
                }
         }

Controller方法:

@RequestMapping("/responseEntity.do") 
@ResponseBody 
public Emp testResponseEntity(){ 
    Emp emp = new Emp(); 
    emp.setEmpno(1003); 
    emp.setEname("chris"); 
    emp.setJob("manager"); 
    emp.setSalary(4560.5); 
    return emp; 
} 

测试结果:

在这里插入图片描述

4.响应json数组

页面js:

function responseList(){
         $.ajax({
            url : "responseList.do",
            type : "post",
            success : function(data){
            var html = "";
            $.each(data, function(i,emp){
                html += "<p>";
                html += "员工编号:" + emp.empno;
                html += " 员工姓名:" + emp.ename;
                html += " 员工岗位:" + emp.job;
                html += " 员工工资:" + emp.salary;
                html += "</p>";
                    });
             $("#info").html(html);
                }
            });
        }

Controller方法:

@RequestMapping("/responseList.do") 
@ResponseBody 
public List<Emp> testResponseList(){ 
    List<Emp> list = new ArrayList<Emp>(); 
    Emp e1 = new Emp(101,"zhangsan","aaa",123.0); 
    Emp e2 = new Emp(102,"lisi","bbb",456.9); 
    Emp e3 = new Emp(103,"wangwu","ccc",789.5); 
    list.add(e1); 
    list.add(e2); 
    list.add(e3); 
    return list; 
} 

测试结果:

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值