对于一般的请求直接返回ModelAndVIew就可以了,但有时为了操作方便,前台会要用到Ajax来请求,而且有的前端框架要求返回指定的JSON格式,这里先针对POST请求的后台做一个处理。
前台代码
function serverLogin() {
var $newpass = $('#txtNewPass');
var $rePass = $('#txtRePass');
if ($newpass.val() == '') {
console.log('新密码长度'+$newpass.size())
msgShow('系统提示', '请输入新密码!', 'warning');
return false;
}
//todo:密码长度问题
if (6 > $newpass.val().length ) {
msgShow('系统提示', '密码长度须大于等于6!', 'warning');
return false;
}
if ($rePass.val() == '') {
msgShow('系统提示', '请输入确认密码!', 'warning');
return false;
}
if ($newpass.val() != $rePass.val()) {
msgShow('系统提示', '两次密码不一至!请重新输入', 'warning');
return false;
}
$.post("${pageContext.request.contextPath}/common/changePassword.action",{userAccount:'${sessionScope.userAccount}', newPassword: $newpass.val()},function(resultJSONObject) {
msgShow('系统提示', '恭喜,密码修改成功!<br>您的新密码为:' + resultJSONObject.newPwd, 'info');
$newpass.val('');
$rePass.val('');
closePwd();
}, "json")
}
用户在前端进行密码修改的时候,通过POST向后台发起请求,后台需要返回一个JSON格式的resultJSONObject值,后台代码如下:
后台
@RequestMapping("changePassword.action")
@ResponseBody
public String changePassword(HttpServletResponse response, String userAccount, String newPassword ) {
try {
User user = userService.getUserByAccount(userAccount);
user.setUserPassword(MD5Util.createMd5Code(newPassword));
userService.updateUser(user);
} catch (Exception e) {
e.printStackTrace();
}
JSONObject jsonObject = new JSONObject();
jsonObject.put("newPwd", newPassword);
return jsonObject.toString();
}