当前位置: 代码迷 >> J2EE >> 为啥后台验证的时候老是不能验证确认密码这一项
  详细解决方案

为啥后台验证的时候老是不能验证确认密码这一项

热度:69   发布时间:2016-04-17 23:12:51.0
为什么后台验证的时候老是不能验证确认密码这一项?
每次即便输入正确都是提示“两次密码输入不一致”,我查了下数据库,还会传个空值进去。怎么回事?大神快来帮帮我
register.jsp
 用户名: <input type="text" name="username">*用户名不能为空<br>  
       设置密码:<input type="password" name="password">*密码需设置为4-12个字符<br>
       确认密码:<input type="password" name="repassword"><br>
    <input type="submit" value="提交">
        <input type="reset"  value="重置"> 


RegistAction.java的验证方法
 public String execute() throws Exception {  
  User user=new User();//注册save()里的参数
//实例化:调用get方法获取表单中username,password,repasword的值
  RegisterAction ra=new RegisterAction();
  ra.setUsername(username);//保存到对象中
  ra.setPassword(password); 
  if(ra.getUsername()==null||"".equals(ra.getUsername())){
    message="用户名不能为空,请重新输入!";
    return "input";
   }
  if(ra.getPassword()==null||"".equals(ra.getPassword())){
    message="密码不能为空,请重新输入!";
    return "input";
   } 
  if(ra.getRepassword()==null||"".equals(ra.getRepassword())){
    message="确认密码不能为空,请重新输入!";
    return "input";
   } 
  if(!ra.getPassword().equals(ra.getRepassword())) {
    message="两次密码输入不一致,请重新输入!";
    return "input";
   } 


 //已运行
if(userDAO.findByName(username)>0){
 message="你好,用户名:"+username+"已经注册,请重新选择用户名!";
 return "input";
 
 }
 if(userDAO.save(user)==null){
 return "input";
 }


message="注册成功!";
return "success";

 }  

------解决思路----------------------
首先第一点,就是不应该在后台进行校验是否一致,应该用js来校验


你的错误在于,你没有对ra设置repassword,后面取出来是空,判断为假,自然向下走了。
------解决思路----------------------
用户名和密码的检验应该在jsp里啊……
后台检验是否已注册就好了
------解决思路----------------------
引用:
Quote: 引用:

用户名和密码的检验应该在jsp里啊……
后台检验是否已注册就好了
没后台校验会不会不安全啊,比如说有的浏览器不支持js的怎么办

jsp里校验的是用户输入的是否符合要求(例如:两次密码是否一致、不能为空、特殊字符、长度要求等),
后台判断是否已注册,不放心就把空字符串判断再加上
  相关解决方案