目前我遇到过的情况有以下几种:
1.前端js代码传递的数据中,属性名称与后端Java类(此处类名称为Admin)中变量不一致(如下图加引号的userid,password全称以及大小写和Admin类中需一致);
2.Admin类中没有无参构造函数(最无声无息坑爹的);
3.getter和setter函数定义有误,我之前是有两个定义相似的变量,自动生成getter和setter时函数名重复,导致了函数重载,框架构造对象时无法确定调用的函数
4.前端包装的数据格式等有问题,在浏览器中如下图处可查看数据打包方式
前端代码
var admin = {
"userid":userid,
"password":password,
};
var jsonData = JSON.stringify(admin);
$.ajax({
async : false,
type : "post",
url : "adminLogin",
data : jsonData,
dataType : "JSON",
contentType : "application/json;charset=UTF-8",
success : function(result) {// result返回的内容
if (result.res == 0)
alert("账号错误");
if (result.res == 2)
alert("密码错误");
alert("登录成功");
},
error : function() {
// 请求失败,执行的操作
alert("提交失败");
}
});
后端代码
@ResponseBody
@RequestMapping("/adminLogin")
public String adminLogin(@RequestBody Admin admin, HttpSession session){
Admin atmp = adminService.getAdminByUserid(admin.getUserid());
JSONObject json = new JSONObject();
if(atmp == null){
json.put("res", 0); //no such user
return json.toJSONString();
}
if(atmp.getPassword().equals(admin.getPassword())){
json.put("res", 1);
session.setAttribute("user", atmp);
return json.toJSONString();
}
json.put("res", 2); //password is wrong
return json.toJSONString();
}