SpringMVC教程--json使用详解
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使用详解相关推荐
- SpringMVC接受JSON参数详解及常见错误总结我改
SpringMVC接受JSON参数详解及常见错误总结 最近一段时间不想使用Session了,想感受一下Token这样比较安全,稳健的方式,顺便写一个统一的接口给浏览器还有APP.所以把一个练手项目的前 ...
- SpringMVC教程--异常处理器详解
异常处理器 springmvc在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常处理器可以实现一个系统的异常处理逻辑. 1.1 异常处理思路 系统中异常包括两类:预期异常和运行时异常Run ...
- springMVC教程--拦截器详解
3 拦截器 3.1 定义 Spring Web MVC 的处理器拦截器类似于Servlet 开发中的过滤器Filter,用于对处理器进行预处理和后处理. 3.2 拦截器定义 实现HandlerInte ...
- springmvc教程--RESTful支持详解
RESTful支持 1.1 需求 RESTful方式商品修改.商品查询. 1.2 添加DispatcherServlet的rest配置 <servlet><servlet-name& ...
- 【JSON】JSON入门详解(二)
文章目录 JSON基础文章荐读 JavaScript创建JSON对象 JSON与XML的那些事 JSON与XML的相同之处 JSON与XML的不同之处 AJAX相关JSON与XML JSON与XML的 ...
- python语言入门详解-python初级教程:入门详解
python初级教程:入门详解 Crifan Li 目录 前言 .................................................................... ...
- h2 不能访问localhost_SpringBoot2.x系列教程44--H2数据库详解及搭建Web控制台
SpringBoot2.x系列教程44--H2数据库详解及搭建Web控制台 作者:一一哥 我在上一章节中讲解了Spring Boot中整合Mybatis,接下来我给大家介绍一款内存数据库--H2. H ...
- python中json模块博客园_Python中的Json模块详解
Python中的Json模块详解 Json(JavaScript Object Notation)它是一种轻量级的数据交换格式,具有数据格式简单,读写方便易懂等很多优点.许多主流的编程语言都在用它来进 ...
- CentOS 7安装教程(图文详解)如下
虚拟机安装 CentOS 7安装教程(图文详解)如下:
最新文章
- 独家 | 数据科学入门指南:新手如何步入数据科学领域?
- windows环境下python怎么安装mlxtend-python连接QQ实现自动回复python 机器学习库
- oracle中的rowid--伪列-删除表中的重复内容-实用
- nginx在CDN加速或使用SLB代理后,获取真实IP,做并发访问限制的方法
- 赶走最令人不愉悦的一类BUG,你准备好了么?
- MX250和第三方Linux版区别,MX250和MX350哪个好一点,区别和差距在哪里?求推荐?_科技数码通...
- Analyzing Storage Performance using the Windows Performance Analysis ToolKit (WPT)
- yii2 ajax访问控制器,如何在yii2中运行控制器动作作为ajax
- 关于GaussDB(DWS)的正则表达式知多少?人人都能看得懂的详解来了!
- 京东金融 App 收集隐私?开源库程序员不背锅!
- mysql开发平台_搭建mysql编程平台
- access统计各职务人数_东莞各阶段学生人数统计|终于知道为什么在东莞总是学位紧缺了...
- python前景如何调用带有event参数的方法_13、第七 - 网络编程基础 - Python中协程EVENT()函数-事件函数...
- 45. 将脚本放在底部(6)
- Mac:彻底卸载MySQL
- Android手势密码解锁设计
- 大华条码秤数据同步发送数据格式
- SpaceSniffer 内存管理 空间嗅探器内存清理神器
- 简要增量式PI控制器
- php 生成ics文件