目录
为什么用 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>