[SpringMVC] 使用@ResponseBody返回JSON数据报错406

问题:
控制器要返回转换成JSON的对象时,使用注解@ResponseBody报错,服务器返回406。
解决办法:

  1. JSON依赖不仅需要jackson-core-asl和jackson-mapper-asl,还需要jackson-databind依赖。
  2. SpringMVC配置时除了,还需要添加配置。
    控制器 - Java:
package com.spz.spzblog.controller;

import com.spz.spzblog.po.Article;
import com.spz.spzblog.po.Collections;
import com.spz.spzblog.service.IndexService;
import com.spz.spzblog.vo.IndexPageVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;

//首页第一次打开时加载内容
@Controller
public class IndexController {

    @Autowired
    private IndexService indexServiceImpl;

    @RequestMapping(value = "/index",method = RequestMethod.POST)
    public @ResponseBody IndexPageVo index(Model model)throws Exception{
        IndexPageVo indexPageVo = new IndexPageVo();
        List
articles = indexServiceImpl.indexNewArticles(); List collectionses = indexServiceImpl.indexHotCollections(); indexPageVo.setNewArticles(articles); indexPageVo.setHotCollections(collectionses); indexPageVo.setHotUsers(null); return indexPageVo; } }

pom.xml:



  org.codehaus.jackson
  jackson-core-asl
  1.9.11


  org.codehaus.jackson
  jackson-mapper-asl
  1.9.13


  com.fasterxml.jackson.core
  jackson-databind
  2.7.1-1

springmvc.xml:




    
    
    
    
        
            
                
                    
                        text/plain;charset=UTF-8
                        text/html;charset=UTF-8
                    
                
            
            
                
                    
                        application/json; charset=UTF-8
                        application/x-www-form-urlencoded; charset=UTF-8
                    
                
            
        
    

    
    


前端页面访问 index.action - JavaScript:

//文档树、文件图片加载完成后调用
window.onload = function () {
    //页面首次访问时请求首页数据
    $.ajax({
        type:'post',
        url:'${pageContext.request.contextPath}/index.action',
        contentType:'application/json;charset=utf-8',
        success:function (data) {
            alert(data);
        }
    });
}

参考
http://blog.csdn.net/pc_amoon/article/details/51785461

你可能感兴趣的:([SpringMVC] 使用@ResponseBody返回JSON数据报错406)