(十三)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.所以把一个练手项目的前 ...
随机推荐
- .netcore signalR 实时消息推送
服务器端引入包 Install-Package Microsoft.AspNetCore.SignalR客户端引入包 npm install @aspnet/signalr <template ...
- 表单 Flask-WTF - 校验器
1 wtforms内置的校验器 Class wtforms.validators.DataRequired(message=None)此验证器将会检测field是否输入了数值,实际上是进行了if fi ...
- 【Robot Framework 】项目实战汇总
写在前面 RF自动化的文章记录基本完成,建一个汇总目录,方便查看. [Robot Framework 项目实战]汇总 ∮[RF 项目实战 00]环境搭建 ∮[RF 项目实战 01]使用 Request ...
- Linux设备驱动程序 之 vmalloc
vmalloc()函数的工作方式类似于kmalloc(),只不过在前者分配的内存虚拟地址是连续的,而物理地址则无须连续:这也是用户空间分配函数的工作方式:由malloc()返回的页在进程的虚拟地址空间 ...
- SOA(面向服务的架构)初识
SOA是一种设计方法,其中包含多个服务,而服务之间通过配合最终会提供一系列功能.一个服务通常以独立的方式存在于操作系统中.服务之间通过网络调用(常见有http+xml.http+json等),而非进程 ...
- Python 类中__init__()方法中的形参与如何修改类中属性的值
一.__init__()方法 如果__init__()方法为 class Cat(): def __init__(self,num) : self.num=num Python中类的__init__( ...
- export default {} 和new Vue()区别?
export default 的用法:相当于提供一个接口给外界,让其他文件通过 import 来引入使用. 而对于 new Vue({})部分, 只是创建一个Vue的实例 就是相当于创建一个根组件 h ...
- start开启服务的生命周期
* 完整生命周期:onCreate()-->onStartCommand()-->onDestroy() * 开启服务:onCreate()-->onStartCommand() * ...
- C++ STL swap_range
#include <iostream>#include <vector>#include <deque>#include <algorithm> usi ...
- Linux下如何安装Nginx
看这就够了 https://segmentfault.com/a/1190000012435644 注意如果是远程浏览器访问是否启动了nginx,出现无法访问 服务器能够启动.访问不了页面 很大可能是 ...