您的位置:首页 > 编程语言 > Java开发

Spring MVC Json 405 (Method Not Allowed)/ 404 Bad Request

2016-07-22 15:36 741 查看

在spring mvc 框架下利用Ajax向后台发送Json格式数据,出现了404、405问题。

原因如下:

出现404,是因为Ajax的type设成了“GET”,但是@RequestBody注解不支持GET,只支持POST.

出现405,是因为框架添加了spring security, 凡是post方法都需要token验证。

具体配置如下:

ajax:

<script type="text/javascript">
var value=[];
$(document).ready(function()
{
var token = $('#csrfToken').val();
var header = $('#csrfHeader').val();

var saveDataAry=[];
var data1={username:"test",email:"gz"};
var data2={username:"ququ",email:"gr"};
saveDataAry.push(data1);
saveDataAry.push(data2);

$("#click").click(function(){
var link=$("#urlpath").val();
$.ajax(
{
url:link,
type:"POST",
dataType:"json",
contentType:"application/json",
data:JSON.stringify(saveDataAry),
beforeSend: function(xhr) {
xhr.setRequestHeader("Accept", "application/json");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.setRequestHeader(header, token);
}
});
});
});
</script>


<body>
<input type="hidden" id="csrfToken" value="${_csrf.token}"/>
<input type="hidden" id="csrfHeader" value="${_csrf.headerName}"/>
<input type="hidden" id="urlpath" value=<c:url value="/auth/json"/>>
</div>
<button id="click">Click</button>
</body>


Controller

@RequestMapping(value="/auth/json",method=RequestMethod.POST,consumes="application/json")
public @ResponseBody String getShopInJSON(@RequestBody List<TestUser>user) {

System.out.println(user.get(0).getEmail());
return "";
}


TestUser

package com.user;

public class TestUser {
private String username;
private String email;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: