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,使用“扫一扫”付款,付款码见下图,别忘了付款留言哦!