版本
JDK 1.8
Spring 4.3.0RELEASE
ERR::
Cannot find class [org.springframework.http.converter.json.MappingJacksonHttpMessageConverter]
for bean with name 'org.springframework.http.converter.json.MappingJacksonHttpMessageConverter#28b5818'
defined in class path resource [spring.xml];
配置文件的配置信息跟jackson的版本有关。
版本一: org.springframework.http.converter.json.MappingJacksonHttpMessageConverter
版本二:org.springframework.http.converter.json.MappingJackson2HttpMessageConverter
::【ajax】Springmvc 返回JSON文本::
1、添加 jackson jar包 :
jackson-core
jackson-mapper
jackson-databind
pom.xml
<!--ajax jackson-core jar -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.7.3</version>
</dependency>
<!--ajax jackson-mapping jar -->
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
<!-- Caused by: java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/JavaType -->
<!--ajax jackson-databind jar -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.7.3</version>
</dependency>
<!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list >
<ref bean="mappingJacksonHttpMessageConverter" />
</list>
</property>
</bean>
<bean id="mappingJacksonHttpMessageConverter"
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
3、在Action类中添加如下代码,ajax可以返回一个对象,List类型和Map类型
Action.java
package com.springmvc_ajax;
import java.util.ArrayList;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping(value="/user")
public class Spring_AjaxDemo {
public Spring_AjaxDemo(){
System.out.println("Spring_AjaxDemo....");
}
/**
* @ResponseBody User 表示让springmvc将User对象转成json文本
*/
@RequestMapping(value="/bean2json")
public @ResponseBody User bean2json() throws Exception{
//创建Emp对象
User emp = new User();
emp.setId(1);
emp.setUserName("学生");
emp.setOnboardDate(new Date());
return emp;
}
@RequestMapping(value="/listbean2json")
public @ResponseBody List<User> listbean2json() throws Exception{
//创建List对象
List<User> userList = new ArrayList<User>();
//向List对象中添加三个对象
userList.add(new User(1,"小明",new Date()));
userList.add(new User(2,"小李",new Date()));
userList.add(new User(3,"花花",new Date()));
//返回需要转JSON文本的对象
return userList;
}
@RequestMapping(value="/map2json")
public @ResponseBody Map<String,Object> map2json() throws Exception{
//创建List对象
List<User> empList = new ArrayList<User>();
//向List对象中添加三个Emp对象
empList.add(new User(1,"小明",new Date()));
empList.add(new User(2,"小李",new Date()));
empList.add(new User(3,"花花",new Date()));
//创建Map对象
Map<String,Object> map = new LinkedHashMap<String,Object>();
//向Map对象中绑定二个变量
map.put("total",empList.size());
map.put("rows",empList);
//返回需要转JSON文本的对象
return map;
}
}
index.jsp
<%@ page language="java" pageEncoding="utf-8"%>
<!DOCTYPE html>
<!--
XHTML 1.0 版本声明文档类型
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-->
<html>
<head>
<title>springmvc_ajax</title>
<script src="//cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script>
</head>
<body>
<input type="button" value="Emp转JSON"/><p>
<span id="span1">test</span><br>
<input type="button" value="List<Emp>转JSON"/><p>
<input type="button" value="Map<String,Object>转JSON"/><p>
<!-- User转JSON -->
<!-- url 请求发送地址
sendData 发送请求体中的数据,符合JSON格式,例如:{key:value,key:value}
function() 请求成功时执行回调函数,类似于传统方式ajax.onreadystatechange = 处理函数
function处理函数最多可以接收三个参数
- 服务端返回的数据,例如:backData
- 服务端状态码的文本描述,例如:success、error
- ajax异步对象,即XMLHttpRequest对象
(ajax只提交form以文本方式,如果异步提交包含<file>上传是传过不过去,需要使用jquery.form.js的.ajaxSubmit)
-->
<script>
$(":button:first").click(function(){
var url = "${pageContext.request.contextPath}/user/bean2json.action";
var sendData = null;
$.post(url,sendData,function(backData,textStaut,ajax){
alert(ajax.responseText);
//var hiredate = backData.hiredate;
//var date = new Date(hiredate);
//alert(date.getFullYear()+"年"+(date.getMonth()+1)+"月"+(date.getDate())+"日");
});
});
</script>
<!-- List<Emp>转JSON -->
<script type="text/javascript">
$(":button:eq(1)").click(function(){
var url = "${pageContext.request.contextPath}/user/listbean2json.action";
var sendData = null;
$.post(url,sendData,function(backData,textStaut,ajax){
alert(ajax.responseText);
});
});
</script>
<!-- Map<String,Object>转JSON -->
<script type="text/javascript">
$(":button:last").click(function(){
var url = "${pageContext.request.contextPath}/user/map2json.action";
var sendData = null;
$.post(url,sendData,function(backData,textStaut,ajax){
alert(ajax.responseText);
});
});
</script>
</body>
</html>