json数据交互

1.1 @RequestBody

作用:

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

本例子应用:

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

1.2 @ResponseBody

作用:

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

本例子应用:

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

1.3 请求json,响应json实现:

1.3.1 环境准备

Springmvc默认用MappingJacksonHttpMessageConverter对json数据进行转换,需要加入jackson的包,如下:

1.3.2 配置json转换器

在注解适配器中加入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 /> 则不用定义上边的内容。

 

1.3.3 controller编写

// 商品修改提交json信息,响应json信息@RequestMapping("/editItemSubmit_RequestJson")public @ResponseBody Items editItemSubmit_RequestJson(@RequestBody Items items) throws Exception {System.out.println(items);//itemService.saveItem(items);return items;}

1.3.4 页面js方法编写:

引入 js:

<script type="text/javascript"

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

//请求json响应jsonfunction request_json(){$.ajax({type:"post",url:"${pageContext.request.contextPath }/item/editItemSubmit_RequestJson.action",contentType:"application/json;charset=utf-8",data:'{"name":"测试商品","price":99.9}',success:function(data){alert(data);}});}

1.3.5 测试结果:

从上图可以看出请求的数据是json格式

1.4 Form提交,响应json实现:

采用form提交是最常用的作法,通常有post和get两种方法,响应json数据是为了方便客户端处理,实现如下:

1.4.1 环境准备

同第一个例子

1.4.2 controller编写

// 商品修改提交,提交普通form表单数据,响应json@RequestMapping("/editItemSubmit_ResponseJson")public @ResponseBody Items editItemSubmit_ResponseJson(Items items) throws Exception {System.out.println(items);//itemService.saveItem(items);return items;}

1.4.3 页面js方法编写:

function formsubmit(){var user = " name=测试商品&price=99.9";alert(user);$.ajax({type:'post',//这里改为get也可以正常执行url:'${pageContext.request.contextPath}/item/ editItemSubmit_RequestJson.action',//ContentType没指定将默认为:application/x-www-form-urlencodeddata:user,success:function(data){alert(data.name);}})}

从上边的js代码看出,已去掉ContentType的定义,ContentType默认为:application/x-www-form-urlencoded格式。

1.4.4 测试结果:

从上图可以看出请求的数据是标准的key/value格式。

1.4.5 jquery的form插件插件

针对上边第二种方法,可以使用jquery的form插件提交form表单,实现ajax提交form表单,如下:

引用js:

<script type="text/javascript"

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

<script type="text/javascript"

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

js方法如下:

function response_json() {//form对象var formObj = $("#itemForm");//执行ajax提交formObj.ajaxSubmit({dataType : "json",//设置预期服务端返回jsonsuccess : function(responseText) {alert(responseText);}});}

2.4.5 小结

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

SpringMVC教程--json使用详解相关推荐

  1. SpringMVC接受JSON参数详解及常见错误总结我改

    SpringMVC接受JSON参数详解及常见错误总结 最近一段时间不想使用Session了,想感受一下Token这样比较安全,稳健的方式,顺便写一个统一的接口给浏览器还有APP.所以把一个练手项目的前 ...

  2. SpringMVC教程--异常处理器详解

    异常处理器 springmvc在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常处理器可以实现一个系统的异常处理逻辑. 1.1 异常处理思路 系统中异常包括两类:预期异常和运行时异常Run ...

  3. springMVC教程--拦截器详解

    3 拦截器 3.1 定义 Spring Web MVC 的处理器拦截器类似于Servlet 开发中的过滤器Filter,用于对处理器进行预处理和后处理. 3.2 拦截器定义 实现HandlerInte ...

  4. springmvc教程--RESTful支持详解

    RESTful支持 1.1 需求 RESTful方式商品修改.商品查询. 1.2 添加DispatcherServlet的rest配置 <servlet><servlet-name& ...

  5. 【JSON】JSON入门详解(二)

    文章目录 JSON基础文章荐读 JavaScript创建JSON对象 JSON与XML的那些事 JSON与XML的相同之处 JSON与XML的不同之处 AJAX相关JSON与XML JSON与XML的 ...

  6. python语言入门详解-python初级教程:入门详解

    python初级教程:入门详解 Crifan Li 目录 前言 .................................................................... ...

  7. h2 不能访问localhost_SpringBoot2.x系列教程44--H2数据库详解及搭建Web控制台

    SpringBoot2.x系列教程44--H2数据库详解及搭建Web控制台 作者:一一哥 我在上一章节中讲解了Spring Boot中整合Mybatis,接下来我给大家介绍一款内存数据库--H2. H ...

  8. python中json模块博客园_Python中的Json模块详解

    Python中的Json模块详解 Json(JavaScript Object Notation)它是一种轻量级的数据交换格式,具有数据格式简单,读写方便易懂等很多优点.许多主流的编程语言都在用它来进 ...

  9. CentOS 7安装教程(图文详解)如下

    虚拟机安装 CentOS 7安装教程(图文详解)如下:

最新文章

  1. 独家 | 数据科学入门指南:新手如何步入数据科学领域?
  2. windows环境下python怎么安装mlxtend-python连接QQ实现自动回复python 机器学习库
  3. oracle中的rowid--伪列-删除表中的重复内容-实用
  4. nginx在CDN加速或使用SLB代理后,获取真实IP,做并发访问限制的方法
  5. 赶走最令人不愉悦的一类BUG,你准备好了么?
  6. MX250和第三方Linux版区别,MX250和MX350哪个好一点,区别和差距在哪里?求推荐?_科技数码通...
  7. Analyzing Storage Performance using the Windows Performance Analysis ToolKit (WPT)
  8. yii2 ajax访问控制器,如何在yii2中运行控制器动作作为ajax
  9. 关于GaussDB(DWS)的正则表达式知多少?人人都能看得懂的详解来了!
  10. 京东金融 App 收集隐私?开源库程序员不背锅!
  11. mysql开发平台_搭建mysql编程平台
  12. access统计各职务人数_东莞各阶段学生人数统计|终于知道为什么在东莞总是学位紧缺了...
  13. python前景如何调用带有event参数的方法_13、第七 - 网络编程基础 - Python中协程EVENT()函数-事件函数...
  14. 45. 将脚本放在底部(6)
  15. Mac:彻底卸载MySQL
  16. Android手势密码解锁设计
  17. 大华条码秤数据同步发送数据格式
  18. SpaceSniffer 内存管理 空间嗅探器内存清理神器
  19. 简要增量式PI控制器
  20. php 生成ics文件

热门文章

  1. ESP32中下载固件时的波特率设置和调试监控时波特率的设置
  2. BLE-NRF51822教程8-动态广播
  3. 蓝牙L2CAP剖析(二)
  4. linux下mkdir头文件_Linux部分常用命令学习记录
  5. 石墨烯区块链(4)API
  6. Html 教程 (9)列表
  7. C++ Primer 5th笔记(8)chapter8 类:IO库-总览
  8. java结丹期(15)----javaweb(maven(1))
  9. [现代操作系统] 考前突击
  10. MySql 查询同一字段多个结果合并到一行显示 GROUP_CONCAT