springmvc @responsebody 406/415问题解决

提供几个解决思路

1.如果项目中用的spring jar包是4.x版本, 需要jackson-annotations-2.x/jackson-core-2.x/jackson-databind-2.x这几个jar包
spring版本是3.x的需要这两个jar包jackson-core-asl1.9/jackson-mapper-asl1.9
2.dispatch-servlet.xml配置文件中缺少<mvc:annotation-driven />这段
  如果加上<mvc:之后, 报错 可能是因为<beans里面没有引入这段
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation里面加上这段
    http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
3.可能原因是你配置的后缀是.html返回时, 默认把contentType改成"text/html"
    需要修改web.xml配置, 加入*.json配置

    <servlet>
        <servlet-name>dispatch</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatch</servlet-name>
        <url-pattern>*.html</url-pattern>
        <url-pattern>*.json</url-pattern>
    </servlet-mapping>
/**
 * 用户积分列表
 */
@ResponseBody
@RequestMapping(value = "/list.json",method = {RequestMethod.POST,RequestMethod.GET})
public List<User> userList(@RequestBody PhoneUserQueryParameter p,Model model,HttpServletRequest request,HttpServletResponse response) {
		return phoneUserService.query(p);
}

另外又遇到一个问题, 在用google chrome的DHC插件调试接口时, 后台接收不到POST请求的参数
用GET请求可以接收到参数
在参数前加上@RequestBody, 同时, DHC插件HEADERS中必须设置Content-type为application/json, 后台才能顺利接收到参数

 

友情赞助

如果您喜欢此文,感觉对您工作有帮助,预期领导会给您涨工资,不妨小额赞助一下,让我有动力继续努力。

赞助方式:打开支付宝App,使用“扫一扫”付款,付款码见下图,别忘了付款留言哦!

 

posted @ 2016-11-30 18:46  周雷  阅读(2720)  评论(1编辑  收藏  举报
友情链接