POST …415 (Unsupported Media Type)
在运行程序时,检查了JSP页面以及后端接收无数遍之后,都没有发现到底是哪里出了问题。很苦逼的到网络上搜索结果,查了很多,也根据网上查的资料更改过很多遍,均无效。直到看到这篇博客之后,并且按照上面的解决方法去执行,才解决了我的这个问题。
重点内容
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.7.4</version>
</dependency>
如下贴出我的代码供大家参考:
前端代码:
<script type="text/javascript">
function upjson1(){
var dataStr = {"username":$("#username").val(),"password":$("#password").val()};
console.log(dataStr.username);
console.log(dataStr.password);
$.ajax({
url:"getjson/getjson1",
async:false,
dataType:"text",
type:"POST",
data:JSON.stringify(dataStr),
contentType:"application/json",
success:function(data){
alert(data);
},
error:function(){
alert("失败");
}
});
}
</script>
<form id="formid">
姓名:<input id="username" name="username" type="text" /><br />
密码:<input id="password" name="password" type="password" />
<br />
<input type="button" onClick="upjson1();" value="提交json1" />
<input type="reset" value="重置" />
</form>
后端代码:
@RequestMapping(value = "/getjson1",method = RequestMethod.POST)
@ResponseBody
public Map getuser1(@RequestBody User users) {
Map<String, String> map = new HashMap<String, String>();
map.put("username", users.getUsername());
map.put("pw", users.getPassword());
System.out.println("username:"+users.getUsername());
System.out.println("password:"+users.getPassword());
return map;
}
重点内容
一.@RequestBody 接收的是json字符串,而不是json对象。所以需要注意传过来的是json对象还是json字符串。
二.json总结
JSON字符串:
var str1 = ‘{ “name”: “haorooms”, “sex”: “man” }’;
JSON对象:
var str2 = { “name”: “haorooms”, “sex”: “man” };
- JSON对象转化为JSON字符串
可以运用 toJSONString()或者全局要领 JSON.stringify()将JSON对象转化为JSON字符串。
例如:
var last=obj.toJSONString(); //将JSON对象转化为JSON字符
或者
var last=JSON.stringify(obj); //将JSON对象转化为JSON字符
alert(last); - JSON字符串转换为JSON对象
var obj = eval(‘(’ + str + ‘)’);
或者
var obj = str.parseJSON(); //由JSON字符串转换为JSON对象
或者
var obj = JSON.parse(str); //由JSON字符串转换为JSON对象
然后,就可以这样读取:
Alert(obj.name);
Alert(obj.sex);