目录

为什么用 Json

Json 格式简单,语法简单,解析简单 ;


处理 json 的流程

判断客户端传来的数据格式,如果是 json 格式,则对 controller 方法的形参上使用 @RequestBodyjson 串转为 java 对象 ;如果不是,则直接进行处理 ;

处理完毕以后,使用 @ResponseBodyjava 串转为 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的更多相关文章

  1. SpringMVC学习--json

    简介 json数据格式在接口调用中.html页面中较常用,json格式比较简单,解析还比较方便.比如:webservice接口,传输json数据. springmvc与json交互 @RequestB ...

  2. 【Spring学习笔记-MVC-3.1】SpringMVC返回Json数据-方式1-扩展

    <Spring学习笔记-MVC>系列文章,讲解返回json数据的文章共有3篇,分别为: [Spring学习笔记-MVC-3]SpringMVC返回Json数据-方式1:http://www ...

  3. SpringMVC关于json、xml自动转换的原理研究[附带源码分析 --转

    SpringMVC关于json.xml自动转换的原理研究[附带源码分析] 原文地址:http://www.cnblogs.com/fangjian0423/p/springMVC-xml-json-c ...

  4. springMvc中406错误解决,springMvc使用json出现406 (Not Acceptable)

    springMvc中406错误解决, springMvc使用json出现406 (Not Acceptable) >>>>>>>>>>> ...

  5. springMvc解决json中文乱码

    springMvc解决json中文乱码 springMvc解决json中文乱码,springMvc中文乱码,spring中文乱码 >>>>>>>>> ...

  6. SpringMVC(三)-- 视图和视图解析器、数据格式化标签、数据类型转换、SpringMVC处理JSON数据、文件上传

    1.视图和视图解析器 请求处理方法执行完成后,最终返回一个 ModelAndView 对象 对于那些返回 String,View 或 ModeMap 等类型的处理方法,SpringMVC 也会在内部将 ...

  7. Maven搭建SpringMVC+MyBatis+Json项目(多模块项目)

    一.开发环境 Eclipse:eclipse-jee-luna-SR1a-win32; JDK:jdk-8u121-windows-i586.exe; MySql:MySQL Server 5.5; ...

  8. springMVC学习总结(四)springmvc处理json数据类型以及fastjson的使用

    springMVC学习总结(四)springmvc处理json数据类型以及fastjson的使用 主要内容: 这篇文章主要是总结之前使用springmv接收json的时候遇到的问题,下面通过前台发送a ...

  9. springMVC 处理json 及 HttpMessageConverter 接口

    一.SpringMVC处理json的使用 1.添加依赖jar包 <dependency> <groupId>com.fasterxml.jackson.core</gro ...

  10. SpringMVC接受JSON参数详解及常见错误总结我改

    SpringMVC接受JSON参数详解及常见错误总结 最近一段时间不想使用Session了,想感受一下Token这样比较安全,稳健的方式,顺便写一个统一的接口给浏览器还有APP.所以把一个练手项目的前 ...

随机推荐

  1. Python数据类型之数值-Python基础前传(5)

    学习任何一门学科或者手艺,最忌讳的就是想的太多,做的太少: 有很多朋友私信问我:jacky,我们该如何选择Python的课程?或是我们该如何选择Mysql课程?到底谁的课件和书籍才是最好的? 借着今天 ...

  2. JDK8 新特性 Lambda表达式

    1.java8中Lambda表达式基础语法: (x,y) -> {} 左侧是一个小括号,里面是要实现的抽象方法的参数,有几个参数就写几个参数名,无参可写空括号,无需声明参数类型: 中间是一个jd ...

  3. MySql的Linux版安装

    1,官网下载MySql的Linux版: 下载地址:http://dev.mysql.com//downloads/mysql/ 2.上传到Linux服务器,建议放在/opt/目录下 3.检查当前系统是 ...

  4. Spring Cloud|高可用的Eureka集群服务

    Eureka,作为spring cloud的服务发现与注册中心,在整个的微服务体系中,处于核心位置.单一的eureka服务,显然不能满足高可用的实际生产环境,这就要求我们配置一个能够应对各种突发情况, ...

  5. RAFT选举算法-分布式数据库困惑

    在做HIS研发工作的时候一直想完善其数据组件,想做一个分布式的数据库支持系统.但一直以来都不清楚这个选举算法应怎么做,原来有一个叫raft的算法https://www.cnblogs.com/just ...

  6. 表单事件集锦-input

    最近在写一个手机端提交表单的项目,里面用了不少input标签,因为项目不太忙,所以,想做的完美点,但是遇到了一些问题,比如:页面中的必填项如果有至少一项为空,提交按钮就是不能提交的状态,所以需要对所有 ...

  7. tp中打印sql,查看语句信息

    $a = self::where($where)->fetchSql(true)->select(); dump($a);

  8. RabbitMQ JAVA客户端调用例子

    1.安装erlang 下载地址:http://www.erlang.org/downloads 设置ERLANG环境变量 2.安装RabbitMQ 下载地址: http://www.rabbitmq. ...

  9. otter安装、使用

    一.otter简介 otter是阿里开源的一个分布式数据库同步系统,尤其是在跨机房数据库同步方面,有很强大的功能.它是基于数据库增量日志解析,实时将数据同步到本机房或跨机房的mysql/oracle数 ...

  10. js常用时间转换函数

    1.秒转换为时分秒 // 秒转换为时分秒 export function secExchangeMoment(value = 0){ let secondTime = parseInt(value); ...