为了实现一个登录需求,可以使用手机号、邮箱或者用户名三者任意一个去登录,代码实现如下:
/*
* 登录功能实现
*/
@RequestMapping(value = "/Login.do" , method = RequestMethod.POST)
public String login(Map<String,Object> map,Member member,HttpServletRequest request){
String phoneNo = member.getPhonenumber();
String psd = member.getPassword();
//判断是邮箱还是手机号的正则表达式
String em = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$";
String ph = "^[1][34578]\\d{9}$";
HttpSession session = request.getSession();
if(phoneNo.matches(ph)){//手机号登录
map.put("phonenumber", phoneNo);
map.put("password", psd);
Member ph_member = null;
ph_member = memberDao.selectMemberByPhoneNumber(map);
if(ph_member == null){
map.put("login_msg", "用户名或密码错误");
return "front/login";
}else{
return "front/main";
}
}else if(phoneNo.matches(em)){//邮箱登录
map.put("mailbox", phoneNo);
map.put("password", psd);
Member em_member = null;
em_member = memberDao.selectMemberByMailbox(map);
if(em_member == null){
map.put("login_msg", "用户名或密码错误");
return "front/login";
}else{
return "front/main";
}
}else{//就是用户名登录
map.put("memberName", phoneNo);
map.put("password", psd);
Member name_member = null;
name_member = memberDao.selectMemberByName(map);
if(name_member == null){
map.put("login_msg", "用户名或密码错误");
return "front/login";
}else{
return "front/main";
}
}
}
主要是使用了java的正则验证输入的是邮箱还是手机号,如果两者都不是,则就是用户名去登录。可能写的不是很好,不过可以实现这个需求。