在web項目中使用Json進行數據的傳輸是非常常見且有用的,在這裡介紹下在SpringMVC中使用Json傳數據的一種方法,在我的使用中,主要包括下面四個部分(我個人喜好使用maven這類型工具進行項目構建):
1、引入依賴Jar包 在POM.xml文件(或其他Maven的項目配置文件)中增加如下的依賴: <dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.7.5</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.13</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
2、啟動SpringMVC注解與Json消息轉換器 如下片段是在SpringMVC的配置文件中的:
<mvc:annotation-driven />
<bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
3、JSP界面用javascript異步請求
<script type="text/javascript">
function getInfo() {
$.ajax({
type: "POST",
dataType: "json",
url: "/ajax/getHtml",
success: function(map) {
$("input[name=getInfo]").after("<table>");
$.each(map, function(i, item) {
$("input[name=getInfo]").after(
"<tr><td>" + item.userName + "</td>" +
"<td>" + item.password + "</td></tr>");
});
$("input[name=getInfo]").after("</table");
},
error: function(ret) {
alert("加載失敗");
}
});
}
</script>
4、控制器中執行請求
@ResponseBody //返回不是html之外的數據必須要有這個注解
@RequestMapping(value="/getHtml")
public ModelAndView getHtml() {
Map<String, User> map = new HashMap<String, User>();
User li=new User();
li.setUserName("Li");
li.setPassword("123");
User na=new User();
na.setUserName("Na");
na.setPassword("456");
map.put("1", li);
map.put("2",na);
return new ModelAndView(new MappingJackson2JsonView(),map);
}