(十三)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.所以把一个练手项目的前 ...
随机推荐
- qt5.6.1 +vs2015 自定义控件 不在designer显示
qt designer 不显示自定义插件, qt5.6.1下在bin下点击designer.exe 打开qdesigner 点击帮助- 关于插件. 显示: 在vs2015 窗口中点击qt vs too ...
- jenkins之插件下载失败
1.更换地址 将默认地址 http://updates.jenkins-ci.org/update-center.json 改为 http://mirrors.jenkins-ci.org/statu ...
- PHP 之文件上传类封装
一.前端代码 <!doctype html> <html lang="en"> <head> <meta charset="UT ...
- 修复grub rescue问题
前几天,手欠点了下win10的系统升级,直接从17.09升级到了19.3虽然也有些波折,总体顺利,以为一切都完事大吉之时,重启系统,原来,万恶的win10给我挖好了坑,早等着我呢.我去,千万只cnm脑 ...
- 工作流调度系统Azkaban的简介和使用
1 概述 1.1 为什么需要工作流调度系统 l 一个完整的数据分析系统通常都是由大量任务单元组成: shell脚本程序,java程序,mapreduce程序.hive脚本等 l 各任务单元之间存在时间 ...
- Restorator软件使exe文件都不能打开,exe不支持此接口
遇到的问题: 下载了一个软件Restorator(资源修改器),填写完注册码之后,所有的exe文件都不能打开了,任务管理器不支持此接口打不开. 问题原因: 软件Restorator关联exe文件,运行 ...
- TransitionDrawable
ayerDrawable的一个子类,TransitionDrawable只管理两层的Drawable!两层!两层! 并且提供了透明度变化的动画,可以控制一层Drawable过度到另一层Drawable ...
- Swift 常量
常量一旦设定,在程序运行时就无法改变其值. 常量可以是任何的数据类型如:整型常量,浮点型常量,字符常量或字符串常量.同样也有枚举类型的常量: 常量类似于变量,区别在于常量的值一旦设定就不能改变,而变量 ...
- OpenCL多次循环执行内核的一个简单样例
最近有不少朋友在多次循环执行OpenCL内核程序的时候碰到一些问题.由于对OpenCL初学者而言可能比较普遍,因此我这里给出一个清晰简单的demo来掩饰如何简单又高效地执行循环执行OpenCL内核. ...
- 使用es6一句话去重
let arr = [1,2,3,4,5,1,2,3] let arr2 = Array.from(new Set(arr)) console.log(arr2) //[1,2,3,4,5]