JSON格式强大、简单、精简;其发明人说过,最少十年内一点都不用更新。在JavaWeb中使用频繁,各个JavaWeb框架都对其支持使用,下面看看SpringMVC中一般的使用方法;
整合 JSON 各框架,前面准备都一样,主要是最后的配置XML不一样。
从Spring 4.1版本及以后,均不再支持 Jackson 1.x,所以我们得使用 jackson 2.x;
一、使用 Jackson 2.9.3 配置 JSON 传参方式:【我们以将表单数据转换成JSON字符串后传到Controller中】
1、首先需要引用js框架:jquery.js 和 jquery.serializejson-2.3.1.js
<script type="text/javascript" src="${root}/res/js/jquery.js"></script>
<script type="text/javascript" src="${root }/res/js/jquery.serializejson-2.3.1.js"></script>
2、准备表单页面;
<form id="userform">
<input type="text" name="username" value="${eo.username}" />
<input type="text" name="name" value="${eo.name }" />
<input type="text" name="age" value="${eo.age}" />
<input type="text" name="sex" value="${eo.sex }" />
<input type="text" name="email" value="${eo.email}" />
<input type="text" name="id" value="${eo.id }" />
<input type="text" name="password" value="${eo.password}" />
<input type="text" name="status" value="${eo.status }" />
<input type="button" οnclick="onAjaxSubmit()" value="保存" />
</form>
3、JS调用代码:
<script type="text/javascript">
function onAjaxSubmit(){
var jsonObjData = $("#userform").serializeJSON();//序列化form表单的数据成JSON形式的JS对象
var jsonStrData = JSON.stringify(jsonObjData);//将JSON格式的JS对象,转换成JSON格式的字符串
$.ajax({
type:"POST",
url:"${root}/user/save",
dataType:"json",
contentType:"application/json",
data:jsonStrData,
success:function(data){
//调用成功后代码
}
});
}
</script>
4、Controller 中Java代码:【@RequestBody主要是此注解,表示请求来的内容是json字符串,然后转换成Java对象】
@PostMapping("/save")
@ResponseBody 【如果需要返回的对象转换成JSON字符串返回给客户端,只需要在此加入此注解】
public void save(@RequestBody MUsersEO eo) {
eo = service.saveEO(eo);
}
5、最后就是xml文件配置了,需要先导入 jackson-annotations-2.9.3.jar jackson-core-2.9.3.jar jackson-databind-2.9.3.jar 三包,然后在spring-mvc.xml文件中加入如下配置:
<mvc:annotation-driven></mvc:annotation-driven>
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html; charset=UTF-8</value>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html; charset=UTF-8</value>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
</list>
</property>
</bean>
<mvc:resources mapping="/res/**" location="/res/" />
<!-- 静态资源配置 -->
二、目前项目中包含如下Jar包:
aspectjweaver.jar
commons-dbcp2-2.1.1.jar
commons-fileupload-1.3.2.jar
commons-io-2.5.jar
commons-logging-1.2.jar
commons-pool2-2.4.2.jar
druid-1.1.3.jar
jackson-annotations-2.9.3.jar
jackson-core-2.9.3.jar
jackson-databind-2.9.3.jar
javax.inject-1.jar
log4j-1.2.17.jar
mybatis-3.4.5.jar
mybatis-plus-2.1.5.jar
mybatis-spring-1.3.1.jar
mysql-connector-java-5.1.44-bin.jar
spring-aop-4.3.13.RELEASE.jar
spring-aspects-4.3.13.RELEASE.jar
spring-beans-4.3.13.RELEASE.jar
spring-context-4.3.13.RELEASE.jar
spring-core-4.3.13.RELEASE.jar
spring-expression-4.3.13.RELEASE.jar
spring-jdbc-4.3.13.RELEASE.jar
spring-orm-4.3.13.RELEASE.jar
spring-tx-4.3.13.RELEASE.jar
spring-web-4.3.13.RELEASE.jar
spring-webmvc-4.3.13.RELEASE.jar
taglibs-standard-compat-1.2.5.jar
taglibs-standard-impl-1.2.5.jar
taglibs-standard-jstlel-1.2.5.jar
taglibs-standard-spec-1.2.5.jar