昨天在用Springmvc往前台ajax传数据的时候报了406的错误
想了半天,查了资料终于今早搞定~跟大家分享下
后台Controller的代码:
@RequestMapping("/single.do")
public @ResponseBody List<SingleModel> getJson(HttpServletRequest request) throws Exception{
System.out.println("single controller");
List<SingleModel> list = service.addInfo1();
return list;
}
这里的@ResponseBody注解将list转化为json传给ajax
ajax的代码,我使用ajax是为了异步获取数据来显示图表(使用echarts),mychart那部分都是显示图表的,不用echarts的可以忽略
$.ajax({
type : "post",
async : true, //异步请求(同步请求将会锁住浏览器,用户其他操作必须等待请求完成才可以执行)
url : "<%=request.getContextPath()%>/single.do",
data : {},
dataType : "json", //返回数据形式为json
success : function(result) {
//请求成功时执行该函数内容,result即为服务器返回的json对象
if (result) {
for(var i=0;i<result.length;i++){
names.push(result[i].name); //挨个取出类别并填入类别数组
nums.push(result[i].num); //挨个取出销量并填入销量数组
}
myChart.hideLoading(); //隐藏加载动画
myChart.setOption({ //加载数据图表
xAxis: {
data: names
},
series: [{
// 根据名字对应到相应的系列
name: '销量',
data: nums
}]
});
}
},
error : function(errorMsg) {
//请求失败时执行该函数
alert("图表请求数据失败!");
myChart.hideLoading();
}
})
下面是解决方法!
首先我是使用maven的,要在pom.xml中加入json的依赖包(如果不使用maven就直接下载这几个包)
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.4.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.4.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.4.1</version>
</dependency>
这里我的spring版本是4.1.4,基本4.1.X以上的用这个依赖包是没问题的
接下来在你的spring-mvc.xml配置文件中加入:
<!-- 避免IE执行AJAX时,返回JSON出现下载文件 -->
<bean id="mappingJacksonHttpMessageConverter"
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
<!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
<bean
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="mappingJacksonHttpMessageConverter" /><!-- json转换器 -->
</list>
</property>
</bean>
这一段是配置json模板,配置这里一定要有上一步的依赖包才行,要不然会报错!接下来再运行的时候我就能正常传json到前台ajax了,这是我显示的图表