1.前台js:
var name = $("#name").val();
var pwd = $("#pwd").val();
$.ajax({
url:"login?name="+name+"&pwd="+pwd+"",
type:"post",
success:function(result){
if(result=="false"){
$("#error_msg").html("用户名或密码输入有误");
$('#error_msg').show();
return false;
}
if(result=="true"){
document.loginform.submit();
}
}
});
2.Controller:
@RequestMapping(value = "/login")
public String Verification(HttpServletRequest request,HttpServletResponse response) throws IOException {
PrintWriter out = response.getWriter();
String name = request.getParameter("name");
String pwd = request.getParameter("pwd");
User us = userService.findUserByname(name, pwd);
if (us.getName() == null && us.getPassword() == null){
out.print("false");
return null;
}else {
session.setAttribute("us", us);
out.print("true");
return null;
}
}
3. 后台service
public User findUserByname(String name, String pwd) {
String sql = "select * from user where name=? and password = ?";
User us = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), name,pwd);
return us;
}
注: 意思大家代码一看都明白了,就只是登陆ajax验证了。 问题在第3步,我输入的用户名密码错误,执行sql查不到数据就报错,可以怎样改一下,执行完第3步都返回到Controller,在第2步进行判断返回页面呢?(是不是我的方法有错呢,勿喷,学习Sping mvc ing.....)
使用前判断一下: Userus=userService.findUserByname(name,pwd);
if(us==null)
{
return"";
}
if(us.getName()==null&&us.getPassword()==null){
out.print("false");
returnnull;
}else{
session.setAttribute("us",us);
out.print("true");
returnnull;
}
使用前判断一下: Userus=userService.findUserByname(name,pwd);
if(us==null)
{
return"";
}
if(us.getName()==null&&us.getPassword()==null){
out.print("false");
returnnull;
}else{
session.setAttribute("us",us);
out.print("true");
returnnull;
}
publicintfindUserByname(finalStringname,finalStringpwd){
intcount=0;
Stringsql="select*fromuserwherename=?andpassword=?";
Object[]args={name,pwd};
count=jdbcTemplate.queryForInt(sql,args);
returncount;
}
action层根据返回的count值判断是否正确
如果想友好提示登录就不是这么个逻辑了
Countroller伪码:
登录验证(){Useruser=service.queryByEmail(email);if(user==null){账号不存在}if(user.getStatus()==冻结){账号被冻结了}if(user.getPwd()!=pwd){密码错误}publicintfindUserByname(finalStringname,finalStringpwd){
intcount=0;
Stringsql="select*fromuserwherename=?andpassword=?";
Object[]args={name,pwd};
count=jdbcTemplate.queryForInt(sql,args);
returncount;
}
action层根据返回的count值判断是否正确
如果想友好提示登录就不是这么个逻辑了
Countroller伪码:
登录验证(){Useruser=service.queryByEmail(email);if(user==null){账号不存在}if(user.getStatus()==冻结){账号被冻结了}if(user.getPwd()!=pwd){密码错误} 找到错误了吗 $.ajax({url:"login?name="+name+"&pwd="+pwd+"",type:"post",success:function(result){if(result=="false"){$("#error_msg").html("用户名或密码输入有误");$('#error_msg').show();returnfalse;}if(result=="true"){document.loginform.submit();}}}); 校验成功后, 还会再一次提交form。 if(result=="true"){document.loginform.submit();}版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。