(十三)springMvc 处理 Json
目录
文章目录
为什么用 Json
Json
格式简单,语法简单,解析简单 ;
处理 json 的流程
判断客户端传来的数据格式,如果是 json
格式,则对 controller
方法的形参上使用 @RequestBody
将 json
串转为 java
对象 ;如果不是,则直接进行处理 ;
处理完毕以后,使用 @ResponseBody
将 java
串转为 json
对象,在返回值前面加上这个注解 ;
环境准备
导入如下包 :
spring 4
之前导入下面的包:
jackson-mapper-asl-1.9.13.jar
jackson-core-asl-1.9.13.jar
spring 4
之后导入下面的包:
jackson-core-2.9.1.jar
jackson-databind-2.9.1.jar
jackson-annotations-2.9.1.jar
配置 json 转换器
在 springMvc.xml
中进行配置,和 参数绑定 一样,在适配器中进行配置 ;但是我们使用 <mvc:annotation-driven"/>
标签便不再需要进行配置 ;
后记
经过一系列的踩坑,终于在浏览器看到了 json
;
更新
当初为了赶时间,springMvc 后面学的很着急,博客其实都没记录下什么;现在抽时间更新下;
现在推行 前后端分离
开发,博主看来简直就是个前后端耍锅开发;
前后端耍锅开发
,前后端通过统一接口打交道,一般约定传递 JSON
数据格式 ;
spingMvc
支持处理 JSON
格式的数据,使用 @RequestBody
可以完成数据绑定;
对于 @ResponseBody
,我是没怎么使用,我的 Controller
方法返回一般都返回字符串,在方法里面使用 FastJson
自己构建的 JSON
串,方便加上结果状态码;
@ResponseBody
@RequestMapping(value = "/getContractsByKeyWords", method = {RequestMethod.POST})
public String getContractsByKeyWords(@RequestBody ContractStrength contractStrength, HttpSession session) throws ParseException {
if (null == contractStrength.getPage()) {
Page<ContractStrength> page = new Page<>();
contractStrength.setPage(page);
}
JSONObject jsonObject = new JSONObject();
if (contractStrength.getPage().getPageNo() <= 0) {
jsonObject.put("result", "0");
jsonObject.put("resultInfo", "输入页码有误");
return jsonObject.toJSONString();
}
List<ContractVo> contractVos = contractServices.getContractsByKeyWords(contractStrength);
session.setAttribute("contractStrength", contractStrength);
if (contractVos.size() > 0) {
jsonObject.put("result", "1");
jsonObject.put("resultMessage", contractVos);
} else {
jsonObject.put("result", "0");
jsonObject.put("resultInfo", "没有符合条件的合同");
}
jsonObject.put("page", contractStrength.getPage());
return JSONObject.toJSONString(jsonObject, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty).
replaceAll("null", "\"\"");
}
最后还需要配置下 JSON
的码表,否则会中文乱码 ;
<!-- 使用基于注解的 处理器映射器和处理器适配器 -->
<!-- validator :使用检验器-->
<mvc:annotation-driven validator="validator">
<mvc:message-converters>
<!-- 处理请求返回json字符串的中文乱码问题 -->
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
</mvc:message-converters>
</mvc:annotation-driven>
(十三)springMvc 处理 Json的更多相关文章
- SpringMVC学习--json
简介 json数据格式在接口调用中.html页面中较常用,json格式比较简单,解析还比较方便.比如:webservice接口,传输json数据. springmvc与json交互 @RequestB ...
- 【Spring学习笔记-MVC-3.1】SpringMVC返回Json数据-方式1-扩展
<Spring学习笔记-MVC>系列文章,讲解返回json数据的文章共有3篇,分别为: [Spring学习笔记-MVC-3]SpringMVC返回Json数据-方式1:http://www ...
- SpringMVC关于json、xml自动转换的原理研究[附带源码分析 --转
SpringMVC关于json.xml自动转换的原理研究[附带源码分析] 原文地址:http://www.cnblogs.com/fangjian0423/p/springMVC-xml-json-c ...
- springMvc中406错误解决,springMvc使用json出现406 (Not Acceptable)
springMvc中406错误解决, springMvc使用json出现406 (Not Acceptable) >>>>>>>>>>> ...
- springMvc解决json中文乱码
springMvc解决json中文乱码 springMvc解决json中文乱码,springMvc中文乱码,spring中文乱码 >>>>>>>>> ...
- SpringMVC(三)-- 视图和视图解析器、数据格式化标签、数据类型转换、SpringMVC处理JSON数据、文件上传
1.视图和视图解析器 请求处理方法执行完成后,最终返回一个 ModelAndView 对象 对于那些返回 String,View 或 ModeMap 等类型的处理方法,SpringMVC 也会在内部将 ...
- Maven搭建SpringMVC+MyBatis+Json项目(多模块项目)
一.开发环境 Eclipse:eclipse-jee-luna-SR1a-win32; JDK:jdk-8u121-windows-i586.exe; MySql:MySQL Server 5.5; ...
- springMVC学习总结(四)springmvc处理json数据类型以及fastjson的使用
springMVC学习总结(四)springmvc处理json数据类型以及fastjson的使用 主要内容: 这篇文章主要是总结之前使用springmv接收json的时候遇到的问题,下面通过前台发送a ...
- springMVC 处理json 及 HttpMessageConverter 接口
一.SpringMVC处理json的使用 1.添加依赖jar包 <dependency> <groupId>com.fasterxml.jackson.core</gro ...
- SpringMVC接受JSON参数详解及常见错误总结我改
SpringMVC接受JSON参数详解及常见错误总结 最近一段时间不想使用Session了,想感受一下Token这样比较安全,稳健的方式,顺便写一个统一的接口给浏览器还有APP.所以把一个练手项目的前 ...
随机推荐
- 玩转orangpi 之frpc远程管理+pcd8544(nokia5110 屏幕) 显示运行状态
玩转orangpi 之frpc远程管理+pcd8544(nokia5110 lcd) 显示运行状态. 物件: orangepi一套(电源,网线,orangepiPC)110元 nokia 5110 l ...
- 2019.6.28 校内测试 T2 【音乐会】二重变革
看到这个题之后,一个很暴力很直接的想法就是贴上题目中的代码然后交上去走人,但是很显然这是会TLE+MLE的,想想谁会这么傻把主要代码给你QwQ~: 其实这段代码是想告诉你一件事:用序列中的大数减去小数 ...
- Ubuntu 14.04 64bit中永久添加DNS的方法
第一种方法修改如下文件,默认是空的sudo vim /etc/resolvconf/resolv.conf.d/base在里面加入你想添加的DNS服务器,一行一个nameserver 114.114. ...
- java.util.Calendar获取时间区间问题
虽然java8的LocalDate已经出来,但是很多项目以及自己习惯上还是使用Date,这里还是简单介绍一下如何通过java.util.Calendar获取时间区间. 1 通过calendar.get ...
- Java学习之路(2)
Java中的标识符及命名规范 一.标识符可以使用字母.下划线.$.数字及其他们的组合命名,不能以数字开始,其他的3中可以起头.关键字和保留字不能作为标识符使用; 二.Java是大小写敏感的,也就是说i ...
- POI的XWPFTableCell的方法
1. XWPFParagraph addParagraph() 在这个表格单元格中添加一个段落 2. void addParagraph(XWPFParagraph p) 给这个表格加一段 3. ja ...
- 重读APUE(13)-可靠信号
在信号产生和传递之间有一段时间间隔,称为信号是未决的: 进程可以设置阻塞信号传递:如果进程产生了一个阻塞的信号,并且对该信号的动作是系统默认或者捕捉该信号,则该进程保持此信号为未决状态,直到该进程对此 ...
- 重读APUE(12)-SIGCHLD与僵尸进程
SIGCHLD信号是当子进程终止时向父进程发送的信号:它的语义如下: 如果进程明确的将该信号设置为SIG_IGN,则调用进程不会产生僵尸进程:这种情况下,wait是等不到给子进程收尸的,所以wait阻 ...
- hive进阶 技巧
1.日期格式转换(将yyyymmdd转换为yyyy-mm-dd) select from_unixtime(unix_timestamp('20180905','yyyymmdd'),'yyyy-mm ...
- Firefox Chrome Http请求插件
Firefox:HttpRequester Chrome:Advanced Rest Client