(十三)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.所以把一个练手项目的前 ...
随机推荐
- nodejs基础 用http模块 搭建一个简单的web服务器 响应纯文本
首先说一下,我们平时在浏览器上访问网页,所看到的内容,其实是web服务器传过来的,比如我们访问www.baidu.com.当我们在浏览器地址栏输入之后,浏览器会发送请求到web服务器,然后web服务器 ...
- 1617:转圈游戏 ybt
1617:转圈游戏 时间限制: 1000 ms 内存限制: 524288 KB提交数: 540 通过数: 326 [题目描述] nn 个小伙伴(编号从 00 到 n−1n−1 ...
- spring-boot 定时任务需要注意的地方
spring-boot 跑定时任务非常容易 启动类上添加两个注解基本OK @EnableScheduling @EnableAsync 当然要记录的肯定不是这里的问题了 首先, fixedDelayf ...
- jinja2-过滤器
过滤器 过滤器是个函数,参数就是管道(pipe)前面那个变量.比如 123|myfilter,123就是myFilter的参数.如果需要两个参数,则在myFilter后面加(),即123|myFil ...
- centos7 安装 mysql(在线安装)
在CentOS中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL,而且安装完成之后可以直接覆盖掉MariaDB. 1 下载并安装MySQL官方的 Yum Re ...
- [java]察看两个日期间差多少秒/小时/天
Java 中Date类getTime()的方法返回从1970-1-1以来的毫秒数,这是下面函数运行的基础. package com.example.demo; import java.text.Par ...
- LC 987. Vertical Order Traversal of a Binary Tree
Given a binary tree, return the vertical order traversal of its nodes values. For each node at posit ...
- LevelListDrawable
用来管理一组Drawable的,我们可以为里面的drawable设置不同的level, 当他们绘制的时候,会根据level属性值获取对应的drawable绘制到画布上,根节点 为:<level- ...
- Smarty 获取当前日期时间和格式化日期时间
在Smarty 中获取当前日期时间和格式化日期时间与PHP中有些不同的地方,这里就为您详细介绍: 首先是获取当前的日期时间:在PHP中我们会使用date函数来获取当前的时间,实例代码如下:date(& ...
- PAT 甲级 1019 General Palindromic Number (进制转换,vector运用,一开始2个测试点没过)
1019 General Palindromic Number (20 分) A number that will be the same when it is written forwards ...