手机插件管理:优化你的手机体验
973
2022-12-18
HTTP 415错误
前段时间在使用@RequestBody注解的时候遇到了一个以前没遇到过的错误,HTTP 415 Unsupported media type? 这个是个什么鬼,@ResponseBody可以正常工作而一使用@RequestBody来进行交互就会报这个错误。一直请求不到Controller,我开始总以为是路径或者json格式不对的问题,上网查资料大多也说的是这个问题。可是我已经写了
data : JSON.stringify(user),
dataType : 'json',
contentType : 'application/json;charset=UTF-8',
按照网上的办法也一直不管用,百思不得其解。于是继续在网上找资料,
网上分析原因很多,但找了很久都没解决,基本是以下几类:
springmvc添加配置、注解;
pom.xmvAkvKsl添加jackson包引用;
Ajax请求时没有设置Content-Type为application/json
发送的请求内容不要转成JSON对象,直接发送JSON字符串即可
各种办法都尝试了一遍,还是没有能解决问题;
jquery(function($){
var urlStr = "<%=request.getContextPath()%>/user/GetUser";
var user = {
"id" : 6,
"userName" : "小红",
"password" : "123",
"age" : 12
};
$.ajax({
url : urlStr,
type : "POST",
data : JSON.stringify(user), //转JSON字符串
dataType : 'json',
contentType : 'application/json;charset=UTF-8', //contentType很重要
success : function(result) {
console.log(result);
//alert(result);
//data = eval("(" + result + ")");
//alert(data);
$("#a").html(result.userName);
}
});
});
造了一个简单是数据来测试,还是不行。。
package com-.hnust.controller;
import javax.servlet.httvAkvKsp.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com-.hnust.domain.User;
import com-.hnust.service.IUserService;
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private IUserService userService;
@RequestMapping("/showUser")
public String toIndex(HttpServletRequest request, Model model) {
// int userId = Integer.parseInt(request.getParameter("id"));
// User user = this.userService.getUserById(userId);
// model.addAttribute("user", user);
return "showUser";
}
@RevAkvKsquestMapping(value = "/GetUser", method = RequestMethod.POST)
public @ResponseBody
User GetUser(@RequestBody User user) {
user.setUserName("Wei");
return user;
}
}
控制器也很简单,可是就是请求不到Controller方法。于是我继续在网上寻找资料,直到看到一篇博客,才找到了问题的解决办法。
原来是Jackson的依赖问题,spring3.x和spring4.x是不同的:
spring3.x是org.springframework.http.converter.json.MappingJacksonHttpMessageConverter
spring4.x是org.springframework.http.converter.json.MappingJackson2HttpMessageConverter
具体可以查看spring-web的jar确认,哪个存在用哪个!
在配置ViewResolver的时候应该指定响应的版本,于是我将springmvc的配置文件改为:
class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"> class="org.springframework.web.servlet.view.json.MappingJackson2JsonView">
class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
class="org.springframework.web.servlet.view.json.MappingJackson2JsonView">
class="org.springframework.web.servlet.view.json.MappingJackson2JsonView">
仅仅将
MappingJacksonJsonView
改为
MappingJackson2JsonView
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~