您的位置:首页 > 编程语言 > Java开发

【ajax系列】Spring4 mvc配置JSON返回

2016-07-17 13:02 357 查看
版本

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>


2、在spring.xml中添加一下代码

<!-- <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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: