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包有什么区别,留待以后再研究。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容

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