Spring-MVC 整合JSON 实例

今天在做springmvc的demo时,使用ajax.post 请求获取后端封装返回的json数据时一直报406错误,在查阅了大量的网站后,终于在stackoverflow上找到了解决方案

==============================================================================================================================

1.项目依赖配置

(注:这部分是相对于Maven项目来说的,如果不是Maven管理的项目,可以不理会这部分,直接把相关Sring包和Jackson包导入lib库即可。)

配置Jackson 和Spring依赖


   
   
	
    
    
     
     2.6.3
    
    

   
   

   
   

   
   
	
    
    
     
     com.fasterxml.jackson.core
    
    
	
    
    
     
     jackson-core
    
    
	
    
    
     
     ${jackson-version}
    
    

   
   

   
   
	
    
    
     
     com.fasterxml.jackson.core
    
    
	
    
    
     
     jackson-databind
    
    
	
    
    
     
     ${jackson-version}
    
    

   
   

   
   
	
    
    
     
     com.fasterxml.jackson.core
    
    
	
    
    
     
     jackson-annotations
    
    
	
    
    
     
     ${jackson-version}
    
    

   
   

2.模型

一个简单的实体对象,将所有数据封装为统一结构,然后将会被转化为json格式数据输出。

/** 
 * 封装 返回Json 格式数据 
 *  
 * @author HASEE 
 * @since 2017-03-21 22:15:58
 **/  
  
public class JsonResult
   
   
    
     implements Serializable {  
    private static final long serialVersionUID = -4699713095477151086L;  
  
    /** 
     * 数据 
     */  
    private T data;  
    /** 
     * 信息 
     */  
    private String message;  
    /** 
     * 是否成功 
     */  
    private boolean success;  
  
    public Object getData() {  
        return data;  
    }  
  
    public void setData(T data) {  
        this.data = data;  
    }  
  
    public String getMessage() {  
        return message;  
    }  
  
    public void setMessage(String message) {  
        this.message = message;  
    }  
  
    public boolean isSuccess() {  
        return success;  
    }  
  
    public void setSuccess(boolean success) {  
        this.success = success;  
    }  
  
    public JsonResult() {  
        super();  
    }  
  
    public JsonResult(T data, String message, boolean success) {  
        this.data = data;  
        this.message = message;  
        this.success = success;  
    }  
  
    public JsonResult(T data, String message) {  
        this.data = data;  
        this.message = message;  
        this.success = true;  
    }  
  
    public JsonResult(T data) {  
        this.data = data;  
        this.success = true;  
    }  
}  
   
   

3.控制器

在方法名前面增加@ResponseBody注解。如果Spring发现

  1. 项目lib库中含有Jackson包
  2. Spring启用了 mvc:annotation-driven MVC注解配置
  3. 返回的方法使用了@ResponseBody注解

Spring 会自动进行JSON的转换。

控制器代码如下所示:

package com.lynn.blog.web;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.lynn.blog.common.JsonResult;
import com.lynn.blog.service.impl.UserServiceImpl;
import com.lynn.blog.vo.UserVO;

/**
 * 用户登陆控制层
 * 
 * @author HASEE
 * 
 */
@Controller
@RequestMapping("/userLogin")
public class UserLoginController {

	// 日志处理
	private final Logger log = LoggerFactory.getLogger(this.getClass());

	@Autowired
	private UserServiceImpl userServiceImpl;

	@RequestMapping(value = "/createLoginInfo", method = RequestMethod.POST, produces = { "application/json;charset=UTF-8" })
	public @ResponseBody JsonResult createLoginInfo(UserVO userVO) {
		log.info("---------------开始记录登陆日志");
		Integer flag = 0;
		if (null != userVO) {
			flag = userServiceImpl.createLoginInfo(userVO);
		}
		return new JsonResult(flag, "success",true);
	}

}

4. mvc:annotation-driven 注解

在Spring配置中启用 mvc:annotation-driven 注解


     
     

     
     

	
      
      
	
	
      
      
	
      
      
	
      
      

	
      
      
	
      
      


     
         

在其他配置正确的情况下即可将后端的数据封装为json返回给前端




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值