发表于: 2020-07-15 21:40:32
1 1307
今天完成事情:JSP页面注册功能
昨天的报错是因为 控制层写的有问题,改正了
@RequestMapping(value = "/registerByPhone")
public String registerByPhone(User user, Model model){
String username = user.getUsername();
String password = user.getPassword();
String phone = user.getPhone();
String code = user.getCode();
String key = (String) memcachedUtil.get("code");
logger.info("获取缓存中的验证码为" + key);
logger.info("输入账号为:" + username + "密码码为:" + password + "手机号:" + phone + "验证码:" + code);
//判断输入的用户名是否为空或者空字符
if(code.equals(key)){
if(username != null && username !="" && phone != null && phone != ""){
//判断数据库中是否有此用户名
User user1 = userService.findUser(username);
//如果查询出的账户为空(代表用户不存在),才能注册
if(ObjectUtils.isEmpty(user1)){
try{
//对传入的密码用MD5进行加密加盐
String MD5Password = MD5.generate(password);
//设置密码为新密码
user.setPassword(MD5Password);
//插入数据
int id = userService.addUser(user);
System.out.print("注册成功,请登录,用户ID是:" + id);
//返回到登录页面
return "redirect:/toLogin";
}catch (Exception e){
System.out.print("注册失败,请重新填写注册信息");
model.addAttribute("mes","注册失败,请重新填写注册信息");
return "redirect:/toRegister";
}
}else {
System.out.print("用户名已经存在,请更换用户名");
model.addAttribute("mes","用户名已经存在,请更换用户名");
return "redirect:/toRegister";
}
}else{
System.out.print("用户名不能为空");
model.addAttribute("mes","用户名不能为空");
return "redirect:/toRegister";
}
}else {
logger.info("验证码不正确");
}
return null;
}
然后在判断验证码是否正确的时候,我之前用的是 (code == key),但是在控制台显示验证码不正确
但是控制台显示命名就是一样的 ,然后在师兄的帮助下了解到 == 与 equals 的区别
- 1、首先的区别是,equals 是方法,而 == 是操作符;
- 2、对于基本类型的变量来说(如 short long int float double 等),只能使用 == ,因为这些基本类型的变量没有 equals 方法。
- 对于基本类型变量的比较,使用 == 比较, 一般比较的是它们的值。
- 3、对于引用类型的变量来说(例如 String 类)才有 equals 方法,因为 String 继承了 Object 类, equals 是 Object 类的通用方法。对于该类型对象的比较,默认情况下,也就是没有复写 Object 类的 equals 方法,使用 == 和 equals 比较是一样效果的,都是比较的是它们在内存中的存放地址。但是对于某些类来说,为了满足自身业务需求,可能存在 equals 方法被复写的情况,这时使用 equals 方法比较需要看具体的情况,例如 String 类,使用 equals 方法会比较它们的值。
总之就是 == 是用来比较数值大小的,适用于 基本类型的变量,equals 是比较内存中的存放地址,适用于 String类
String code = user.getCode();
String key = (String) memcachedUtil.get("code");
logger.info("获取缓存中的验证码为" + key);
logger.info("输入账号为:" + username + "密码码为:" + password + "手机号:" + phone + "验证码:" + code);
//判断输入的用户名是否为空或者空字符
if(code.equals(key)){
if(username != null && username !="" && phone != null && phone != ""){
注册完成:
在进行登录操作的时候,用的都是正则表达式,这样就可以在同一个框中输入 手机号,邮箱,
String loginmethod = webParams.reqString("phone");
String em = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$";
String ph = "^[1][3578]\\d{9}$";
if(loginmethod.matches(em)){//邮箱登录
userGetMap.put("email", loginmethod);
} else if(loginmethod.matches(ph)){//手机号登录
userGetMap.put("phone", webParams.reqString("phone"));
}else{//就是用户名登录
userGetMap.put("username", webParams.reqString("phone"));
}
DbResultMap userObj = dao.selectObj(UserBiz.USER_GET, userGetMap);
明天计划的事情:推进任务
评论