springmvc 的json数据交互

1        json数据交互(重点)

1.1    为什么要进行json数据交互

json数据格式在接口调用中、html页面中较常用,json格式比较简单,解析还比较方便。

比如:webservice接口,传输json数据.

 

1.2    springmvc进行json交互

 

1、请求json、输出json,要求请求的是json,所以在前端页面中需要将请求的内容转成json,不太方便。

2、请求key/value、输出json。此方法比较常用。

1.2.1    @RequestBody

作用:

@RequestBody注解用于读取http请求的内容(字符串),通过springmvc提供的HttpMessageConverter接口将读到的内容转换为json、xml等格式的数据并绑定到controller方法的参数上。

本例子应用:

@RequestBody注解实现接收http请求的json数据,将json数据转换为java对象

1.2.2    @ResponseBody

作用:

该注解用于将Controller的方法返回的对象,通过HttpMessageConverter接口转换为指定格式的数据如:json,xml等,通过Response响应给客户端

本例子应用:

@ResponseBody注解实现将controller方法返回对象转换为json响应给客户端

 

1.3    环境准备

1.3.1       加载json转的jar包

springmvc中使用jackson的包进行json转换(@requestBody json串转成java对象和@responseBody  java对象转成json串输出

使用下边的包进行json转),如下:


还要导入jquery文件注意js文件夹的位置

所需的资源已经上传到我的资源页了

1.3.2       配置json转换器

在注解适配器中加入messageConverters 

在springmvc 配置文件中加

 

<!--注解适配器 -->

   <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 /> 则不用定义上边的内容。

1.4    json交互测试

1.4.1       输入json串,输出是json串

1.4.1.1      jsp页面

<scripttype="text/javascript"

src="${pageContext.request.contextPath}/js/jquery-1.4.4.min.js"></script>

要记得引用js

使用jquery的ajax提交json串,对输出的json结果进行解析。  Ajax 关键词 type   提交方法类型 ,url ,datatype   预期服务器返回的数据类型, contentType  发送的数据的类型 ,   success  成功返回,

 

   function requestJson() {

      //请求JSON输出json

      $.ajax({

      type:'post',

      url:'${pageContext.request.contextPath}/requestJson.action',

      contentType:'application/json;charset=utf-8',

      data:'{"name":"手机","price":"999"}',

      success:function (data){

      alert(data);

      }

      });

   }

1.4.1.2      controller

@Controller

public classJsonTest {

   //请求json(商品信息)输出json(商品信息)

   //@RequestBody 将请求的商品信息的json串转成ItemsCustom对象

   //@ResponseBody ItemsCustom转换成json输出

   @RequestMapping("/requestJson")

   public @ResponseBody ItemsCustomrequestJson(@RequestBodyItemsCustom itemsCustom){

     

      //@ResponseBody ItemsCustom转换成json输出

      return itemsCustom;  

   }

}

 

1.4.1.3      测试结果

1.4.2       输入key/value,输出是json串

1.4.2.1      jsp页面

使用jquery的ajax提交key/value串,对输出的json结果进行解析。

function responseJson() {

      //请求key/value输出json

      $.ajax({

        type:'post', 

        url:'${pageContext.request.contextPath}/responseJson.action',

        //contentType:'application/json;charset=utf-8',  请求key/value默认是key/value 所以不用指定

        data:'name=手机&price=999',

        success : function(data){

        alert(data);

        }

      });

   }

1.4.2.2      controller

//请求key/value(商品信息)输出json(商品信息)

   @RequestMapping("/responseJson")

   public @ResponseBody ItemsCustomresponseJson( ItemsCustom itemsCustom){

      //@ResponseBody ItemsCustom转换成json输出

      return itemsCustom;  

   }

1.4.2.3      测试

 

1.2.3  小结

实际开发中常用第二种方法,请求key/value数据,响应json结果,方便客户端对结果进行解析。



摘自传智播客视频

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值