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

1 篇文章 0 订阅

版本

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>







  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值