这个错误,花我好几个小时,才发现问题所在,所以记录下来,以防有人遇到跟我一样的问题,也防止以后自己再次出现同样的问题。
前端的JavaScript代码如下:
function getJsonData(){
$.ajax({
// 传输数据的方式:POST/GET
type : "post",
// 请求URL
url : "${pageContext.request.contextPath}/json/getData",
// 请求的数据类型
contentType : "application/json;charset=utf-8",
// 传输到后台的数据
data : '{"userName" : "wumingshi", "gender" : "male"}',
dataType : "json",
// 请求成功
success : function(data){
alert(data.userName + ", " + data.gender);
console.log("服务器传输到前台的数据:" + data);
}
});
}
后台的java代码如下:
@Controller
@RequestMapping("/json")
public class JsonHandlerController {
@RequestMapping(name = "/getData", method = RequestMethod.POST)
public @ResponseBody Person getData(@RequestBody Person person) {
System.out.println("姓名:" + person.getUserName() + ", 性别:" + person.getGender());
return person;
}
}
我怎么都没发现错误出现在哪,倒是我发现在eclipse启动时的启动信息中,发现如下信息:
我的请求应该是/json/getData才对,情动信息里只用/json是什么原因。
然后,我把配置在类上@RequestMapping去掉之后,重新再启动,就发现如下:
这里发现就只有一个[]括号了,怎么回事,按理说应该是/getData,问题就是出现在这了,如下
应该把@RequestMapping中的name属性该为value属性,就好了。
当然,出现这种错误的原因很多,还有配置方面等等其他原因也有可能出现这种错误,我只是把我出现这种错误提出而已,希望对大家有用。