9、json数据交互(springmvc笔记)

  • 1、json数据格式在接口调用、html页面中比较常用,json格式比较简单,解析还比较方便。这里我们看springmvc进行json交互。

  • 2、json数据交互有两种情况:

    1

    说明:1、请求json、输出json,要求请求的是json串,所以在前端页面中需要将请求的内容转换成json串,不太方便;2、请求的是key/value、输出json,此方法比较常用。

  • 3、环境准备
    在试验时我们需要两个用于解析json数据的jar包:
jackson-core-asl-1.9.11.jar
jackson-mapper-asl-1.9.1.jar
  • 4、配置json转换器(工程springmvc-mybatis08
    springmvc.xml
在注解适配器中加入messageConverters

<!--注解适配器 -->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <property name="messageConverters">
        <list>
        <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>
        </list>
        </property>
    </bean>

说明:这里我们是在适配器中进行配置,也就是说适配器和映射器是分开配置的,但是如果使用<mvc:annotation-driven />配置适配器和映射器,那么上面的json转换器就无需配置了。

  • 5、json交互的测试:输入的是json
    相关的前台页面WebRoot/jsonTest.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"
    isELIgnored="false"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>json交互测试</title>
<script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-1.4.4.min.js"></script>
<script type="text/javascript">
//请求json响应json
function requestJson(){
    $.ajax({
        type:"post",
        url:"${pageContext.request.contextPath }/requestJson.action",
        contentType:"application/json;charset=utf-8",
        data:'{"name":"测试商品","price":99.9}',
        success:function(data){
            alert(data);
        }
    });
}

//请求key/value响应json
function responseJson(){
    $.ajax({
        type:"post",
        url:"${pageContext.request.contextPath }/responseJson.action",
        data:'name=手机&price=99.9',/*不需要指定contentType,因为默认就是key/value类型*/
        success:function(data){
            alert(data);
        }
    });
}

</script>
</head>
<body>
    <input type="button" onclick="requestJson()" value="请求json响应json" />
    <input type="button" onclick="responseJson()" value="请求key/value响应json" />
</body>
</html>

说明:这里我们先看第一种情况,这种情况是请求的是json,而相应的也是jsonController如下:
JsonTest.java

package cn.itcast.ssm.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import cn.itcast.ssm.pojo.Items;
import cn.itcast.ssm.pojo.ItemsCustom;

//json交互测试
@Controller
public class JsonTest {
    //请求json(商品信息),输出json(商品信息)
    /*
     * @RequestBody将请求的商品信息的json串转换成java对象
     * @ResponseBody将java对象转换成json输出
     * */
    @RequestMapping("/requestJson")
    public @ResponseBody ItemsCustom requestJson(@RequestBody ItemsCustom itemsCustom){
        
        return itemsCustom;
    }
}

说明:这个方法中,@RequestBody将请求的商品信息的json串转换成java对象,而@ResponseBodyjava对象转换成json输出。下面我们使用地址http://localhost:8080/springmvc-mybatis08/jsonTest.jsp进行访问,点击第一个按钮。但是这里总是出现一个错误:

org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/json;charset=UTF-8' not supported

在网上找了半天,没找到答案。

  • 6、请求key/value,返回json
    这种情况下,我们在前台页面中不需要设置contentType,因为默认就是发送key/value,下面给出Controller方法:
@RequestMapping("/responseJson")
public @ResponseBody ItemsCustom responseJson(ItemsCustom itemsCustom){
        
    return itemsCustom;
}

说明:在测试此种数据交互的时候也出现错误,暂时还未解决。

  • 7、问题解决
    之后我怀疑是jar出现错误,于是将之前的jar包使用下面的包进行了替换:
jackson-annotations-2.8.0.jar
jackson-core-2.8.0.jar
jackson-databind-2.8.0.jar

然后进行试验,就没问题了,第一种情况下试验结果为


2

3

4

第二种情况的试验结果为:


5

6

7

说明:在我打开之前的jar包和后面的jar进行查看的时候发现目录结构都不一样,这表示网址也不一样,一个是org结尾,一个是com结尾,因为这是初次学习这个工具,不知道这前后jar包有什么区别,留待以后再研究。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,088评论 19 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,148评论 6 342
  • 1.Spring web mvc介绍 Spring web mvc和Struts2都属于表现层的框架,它是Spri...
    七弦桐语阅读 13,990评论 2 38
  • JSON JSON和XML都是需要解析的 JSON是一种轻量级的数据格式,一般用于数据交互服务器返回给客户端的数据...
    JonesCxy阅读 5,894评论 2 10
  • 现在越实践越更加能体会紫雨老师总结的四原则的精妙:给孩子选择;抓大放小;全程陪伴;即时表扬。 心胸开阔、放大格局,...
    苦茶_09e4阅读 1,162评论 0 0

友情链接更多精彩内容