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

SpringMVC json数据交互

程序员文章站 2024-01-12 19:46:10
...

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"); 
} 

测试结果:

SpringMVC json数据交互

SpringMVC json数据交互

SpringMVC json数据交互

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"); 
} 

测试结果:

SpringMVC json数据交互
SpringMVC json数据交互

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; 
} 

测试结果:

SpringMVC json数据交互

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; 
} 

测试结果:

SpringMVC json数据交互