发表于: 2020-09-17 21:13:17

0 1259


新建了一个java类    用来把注册页面输入的数据  打包成一个java对象传给控制层

public class postinfo {

   private  String username;

   private  String password;

   private  String againPassword;

   private  String phone;

   private  String email;

   private  String yzm;



写了俩控制类    一个发送验证码

另一个用来注册



具体实现逻辑  

错误类型都是自己返回


@RequestMapping(value "/sendYzm",method = RequestMethod.POST)
   public void send(String phone){
       String tel = phone;
       sendMessageUtil.sendTelCode(tel);
   }


   @RequestMapping(value "/PhoneRegister"method = RequestMethod.POST)
   public String register(postinfo postinfoHttpServletRequest request) {

       logger.info("传入参数+ postinfo);
       String u = postinfo.getUsername();
       String p = postinfo.getPassword();
       String pp = postinfo.getAgainPassword();
       String phone = postinfo.getPhone();
       String InputYzm = postinfo.getYzm();

       logger.info("用户输入的注册信息:"名字:+ u + "密码:+ p + "第二个密码:+ pp + "手机号:+ phone + "验证码:+ InputYzm);

       //判断输入的用户名是否为空 或者  空字符
       if (u != null && u != "") {
           logger.info("用户名不为空");
       else {
           String error = "用户名不能为空,请重新输入用户名";
           logger.info("用户名不能为空,请重新输入用户名");
           request.setAttribute("UserNameError"error);
           return "phoneRegister";
       }

       if (p != null && p != "") {
           logger.info("密码不为空");
       else {
           String error = "用户密码不能为空!";
           logger.info("用户密码不能为空!");
           request.setAttribute("PassError"error);
           return "phoneRegister";
       }

       if (p == pp) {

           logger.info("两次输入密码一致");
       else {
           String error = "两次输入密码不一致,请重新输入";
           logger.info("两次输入密码不一致");
           request.setAttribute("AgainPassError"error);
           return "phoneRegister";
       }

       //判断数据库中是否有此用户名
       MyAccount NameAccount = my.selectAccountByName(u);
       logger.info("根据用户名查询出的用户为+ NameAccount);

       //如果查询出的账户为空(代表用户不存在),才能注册
       if (ObjectUtils.isEmpty(NameAccount)) {
           logger.info("此用户名不存在,可以注册!");
       else {
           String error = "用户名已经存在,请更换用户名注册或直接登录";
           logger.info("用户名已经存在");
           request.setAttribute("UserNameError"error);
           return "phoneRegister";
       }

       if (phone != null && phone != "") {
           logger.info("手机号不为空,可以注册");
       else {
           String error = "手机号为空,请重新输入!";
           logger.info("手机号为空");
           request.setAttribute("PhoneError"error);
           return "phoneRegister";
       }

       MyAccount PhoneAccount = my.selectAccountByPhone(phone);
       logger.info("根据手机号查询出的用户为+ PhoneAccount);

       //如果查询出的账户为空(代表用户不存在),才能注册
       if (ObjectUtils.isEmpty(PhoneAccount)) {
           logger.info("手机号未被注册过,可以注册!");
       else {
           String error = "手机号已经被注册,请更换手机号或直接登录";
           logger.info("手机号已经被注册");
           request.setAttribute("PhoneError"error);
           return "phoneRegister";
       }

       if (InputYzm != null && InputYzm != "") {
           logger.info("验证码不为空");
       else {

           String error = "验证码为空,请输入验证码";
           logger.info("验证码为空");
           request.setAttribute("PhoneError"error);
           return "phoneRegister";
       }


       if (InputYzm != null && InputYzm != "") {
           logger.info("输入的验证码不为空");
       else {
           String error = "验证码为空,请输入验证码";
           logger.info("输入的验证码为空");
           request.setAttribute("YzmError"error);
           return "phoneRegister";
       }

       //获取缓存中的验证么
       String GetRedisYzm = (StringredisTemplate.opsForValue().get(phone);

       if (GetRedisYzm == null) {
           logger.info("缓存不为空,验证码还未到期");

           if (InputYzm == GetRedisYzm) {
               logger.info("验证码相同");

               //开始注册
               try {
                   MyAccount account = new MyAccount();
                   account.setUsername(u);
                   account.setPassword(p);
                   account.setPhone(phone);
                   logger.info("要注册的用户数据为:+ account);

                   //插入数据
                   int id = my.insertAccount(account);
                   logger.info("注册成功!");
                   //返回到登录页面
                   return "/login";

               catch (Exception e) {
                   String error = "注册失败,请再试试";
                   logger.info("注册失败,请重新输入");
                   request.setAttribute("error"error);
                   return "phoneRegister";
               }

           } else {
               String error = "验证码错误,请重新输入!";
               logger.info("验证码错误");
               request.setAttribute("YzmError"error);
               return "phoneRegister";
           }
       } else {
           String error = "验证码为空,请重新输入!";
           logger.info("验证码为空");
           request.setAttribute("YzmError"error);
           return "phoneRegister";
       }
   }
}





遇到的问题:


jsp写了一个基础注册页面


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>手机注册</title>
<body>
<strong><p>手机号注册</p></strong>
<form action="/PhoneRegister" >
请输入用户名:<br>
<input type="text" name="username" value="${error}">
<br>
请输入密码:<br>
<input type="text" name="password" value="${error}">
<br>
请再次确认密码:<br>
<input type="text" name="againPassword" value="${error}">
<br>
手机号:<br>
<input type="text" name="phone" value="${error}">
<br>
请输入收到的验证码:<br>
<input type="text" name="yzm" value="${error}">
<input type="button" value="获取验证码">
<br>
<br>
<input type="submit" value="注册">
</form>
<br>
</hr>
<a href="/xx">如果你想使用邮箱注册,请点击此处</a>
<br>
<a href="/login">已有账号?点此直接登录</a>
</body>
</html>




但这个验证码功能不知道咋实现  


不仅要把前面输入的手机号作为参数提交  发送验证码接口

还有倒计时..


百度搜到的 要用js  和  ajax 

还不知道咋套进去





返回列表 返回列表
评论

    分享到