1.用户管理之注册

目录

1.2.1前端校验

 1.2.2验证码校验

1.2.3用户名查重和邮箱查重

1.2.3.1用户名查重service操作

1.2.3.2用户名查重dao操作

1.2.3.3邮箱查重service操作

1.2.3.4邮箱查重dao操作

1.2.4.1表单数据存入数据库service

1.2.4.2表单数据存入数据库dao

1.2.5.1激活业务

1.2.5.2激活service

1.2.5.3激活dao

1.2.5.4改Status值


查看总览架构设计图 

1.1流程图

实现

1.2.1前端校验

<!--表单校验
			采用正则校验
			1.用户名:单词字符,长度8到20位;
			2.密码:单词字符,长度8到20位;
			3.邮箱:邮箱格式
			4.姓名:非空
			5.手机号:手机号格式
			6.出生日期:非空
			7.验证码:非空		-->
		<script>
			//校验用户名函数
			function checkUsername() {
				var username = $("#username").val();
				var re = new RegExp(/^[a-zA-Z]{2,20}$/);
				if (re.test(username)){
					$("#username").css("border","")
					return true;
				}else {
					$("#username").css("border","1px solid red")
					return false;
				}
			}
			//校验密码函数
			function checkPassword() {
				var password = $("#password").val();
				var re = new RegExp(/^[a-zA-Z0-9]{8,20}$/);
				if (re.test(password)){
					$("#password").css("border","")
					return true;
				}else {
					$("#password").css("border","1px solid red")
					return false;
				}
			}
			//校验邮箱格式
			function checkEmail() {
				var email = $("#email").val();
				var re = new RegExp(/^\w+@\w+\.\w+$/);
				if (re.test(email)){
					$("#email").css("border","")
					return true;
				}else{
					$("#email").css("border","1px solid red")
					return false
				}
			}
			//校验姓名
			function checkName() {
				var name = $("#name").val();
				if (name == null || name === "" || name === undefined) {
					$("#name").css("border","1px solid red")
					return false;
				}else {
					$("#name").css("border","")
					return true;
				}
			}
			//校验手机号
			function checkPhoneNumber() {
				var phoneNumber = $("#telephone").val();
				var re = /^1(3[0-9]|4[01456879]|5[0-35-9]|6[2567]|7[0-8]|8[0-9]|9[0-35-9])\d{8}$/;
				if (re.test(phoneNumber)){
					$("#telephone").css("border","")
					return true;
				}else {
					$("#telephone").css("border","1px solid red")
					return false;
				}

			}
			//校验出生日期
			function checkBirthday() {
				var birthday = $("#birthday").val();
				if (birthday === "" || birthday == null) {
					$("#birthday").css("border","1px solid red")
					return false;
				}else {
					$("#birthday").css("border","")
					return true;
				}
			}
			//校验验证码非空
			function checkCheckCode() {
				var checkCode = $("#check").val();
				if (checkCode === "" || checkCode == null) {
					$("#check").css("border","1px solid red")
					return false;
				}else {
					$("#check").css("border","")
					return true;
				}
			}
			
			$(function () {

				$("#registerForm").submit(function () {
					//判断主要校验项是否通过
				if (checkName() && checkPassword() && checkEmail()) {
					$.post("User/register",$(this).serialize(),function (data) {
						//{"flag":false,"data":false,"errorMsg":"注册失败,用户名重复!"}

						if (data.flag) {
							location.href = "register_ok.html";
						}else {
							$("#errorMsg").html(data.errorMsg);
							$("#checkCode").attr("src","checkCode?"+new Date().getTime())

						}


					});
				}
				return false
				});
				//绑定丢标事件
				$("#username").blur(checkUsername);
				$("#password").blur(checkPassword);
				$("#email").blur(checkEmail);
				$("#name").blur(checkName);
				$("#telephone").blur(checkPhoneNumber);
				$("#birthday").blur(checkBirthday);
				$("#check").blur(checkCheckCode);


			})
		</script>

 1.2.2验证码校验


        //获取验证码,预防机器人操作
        String check = request.getParameter("check");
        //获取session
        HttpSession session = request.getSession();
        //强转
        String checkcode_server =(String) session.getAttribute("CHECKCODE_SERVER");
        //保证程序的健壮性,当获取了验证码后立即删除当前验证码信息,确保回退页面的验证码不重复
        session.removeAttribute("CHECKCODE_SERVER");
        //验证码如果为空或验证码错误,执行操作
        if (checkcode_server == null || !checkcode_server.equalsIgnoreCase(check)) {
            //将传输结果标准化,预防空指针异常
            //获取结果传输对象
            ResultInfo resultInfo = new ResultInfo();
            //设置前端判断值
            resultInfo.setFlag(false);
            //设置提示信息
            resultInfo.setErrorMsg("验证码错误!");
            /**
             * 未封装的方法
             * */
            /*ObjectMapper mapper = new ObjectMapper();
            String json = mapper.writeValueAsString(resultInfo);
            response.setContentType("application/json;charset=utf-8");
            response.getWriter().write(json);
            System.out.println(json);*/
            /**
             * 封装后的方法
             * 发送数据
             * */
            writeValue(resultInfo,response);

1.2.3用户名查重和邮箱查重

  //如果验证码正确,则查询数据库
            UserService userService = new UserServiceImpl();
            //使用javaBean封装前端表单
            Map<String, String[]> parameterMap = request.getParameterMap();
            User user = new User();
            //抓个异常
            try {
                BeanUtils.populate(user,parameterMap);

            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            }
            ResultInfo resultInfo = new ResultInfo();
            //查用户名是否重复
            Boolean register = userService.register(user);
            if (register) {
                //查邮箱是否重复
                Boolean registerEmail1 = userService.registerEmail(user);
                if (registerEmail1){
                    resultInfo.setData(true);
                    //返回的数据添加状态
                    Boolean result = userService.registerAdd(user);
                    System.out.println(result);
                    if (result) {
                        resultInfo.setFlag(true);
                    }else {
                        resultInfo.setFlag(false);
                        resultInfo.setErrorMsg("信息添加失败,请检查!");
                    }
                }else {
                    resultInfo.setFlag(false);
                    resultInfo.setErrorMsg("注册失败,邮箱已被注册!");
                }
            }else {
                resultInfo.setFlag(false);
                resultInfo.setErrorMsg("注册失败,用户名重复!");
            }
  /**
             * 未封装的方法
             * */
            /*ObjectMapper mapper = new ObjectMapper();
            String json = mapper.writeValueAsString(resultInfo);
            response.setContentType("application/json;charset=utf-8");
            response.getWriter().write(json);
            System.out.println(json);*/
            /**
             * 封装后的方法
             * */
            writeValue(resultInfo,response);

1.2.3.1用户名查重service操作

 public Boolean register(User user) {
        String username = user.getUsername();
        User register = userDao.register(username);

        Boolean flag = false;
        if (register == null ) {
            flag = true;
        }
        return flag;
    }

1.2.3.2用户名查重dao操作

  @Override
    public User register(String username) {
        User user = null;
        try {
            String sql = "select * from tab_user where username = ? ";

            user = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), username);
            return user;
        }catch (Exception e) {

        }
        return user;
    }

1.2.3.3邮箱查重service操作

 @Override
    public Boolean registerEmail(User user) {
        String email = user.getEmail();
        User registerEmail = userDao.registerEmail(email);

        Boolean flag = false;
        if (registerEmail == null ) {
            flag = true;
        }
        return flag;

    }

1.2.3.4邮箱查重dao操作

 @Override
    public User registerEmail(String email) {
        User user = null;
        try {
                String sql = "select * from tab_user where email = ?";

                user = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), email);
                return user;
        }catch (Exception e){

        }
//如果没查到会报错,把错误抓一下,返回的就是空值
        return null;
    }

1.2.4.1表单数据存入数据库service

@Override
    public Boolean registerAdd(User user) {

        //获取全球唯一码并设置为User对象
        user.setCode(UuidUtil.getUuid());
        //设置Status码
        user.setStatus("N");
        //调dao
        Boolean flag = userDao.registerAdd(user);
        //发邮件
        String content = "<a href='http://localhost/User/active?code="+user.getCode()+"'>点击激活旅游网</a>";
        MailUtils.sendMail(user.getEmail(),content,"激活");
        return flag;
    }

1.2.4.2表单数据存入数据库dao

 @Override
    public Boolean registerAdd(User user) {
        String sql = "insert into tab_user (username,password,name,birthday,sex,telephone,email,status,code) values (?,?,?,?,?,?,?,?,?)";
        int update = jdbcTemplate.update(sql, user.getUsername(), user.getPassword(), user.getName(), user.getBirthday(), user.getSex(), user.getTelephone(), user.getEmail(),user.getStatus(),user.getCode());
        //操作成功updata为1,否则为0
        if (update > 0) {
            return true;
        }else {
            return false;
        }

    }

1.2.5.1激活业务

/**
 * 激活
 * */
    public void active(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        UserService userService = new UserServiceImpl();
        //获取用户携带的唯一码
        String code = request.getParameter("code");
        //获取数据库的唯一码,并对比
        boolean userCode = userService.findUserCode(code);
        String msg = null;
        if (userCode) {
            //要加端口号否则无法访问------》???我也不知道写的时候为什么要加这句话,但是估计是个坑
            msg = "激活成功,请<a href ='http://localhost/login.html'>登录</a>";
            response.setContentType("text/html;charset=utf-8");
            //将信息写到页面上
            response.getWriter().write(msg);
        }else {
            msg = "激活失败,请联系管理员!";
            response.setContentType("text/html;charset=utf-8");
            response.getWriter().write(msg);
        }
    }

1.2.5.2激活service

 @Override
    public boolean findUserCode(String code) {
        //根据激活码找用户,有则返回true,否则false
        User user = userDao.findUserCode(code);
        if (user != null) {
            userDao.setStatus(user);
            return true;
        }else {
            return false;
        }

    }

1.2.5.3激活dao

 @Override
    public User findUserCode(String code) {
        User user = null;
        //抓个异常,常用逻辑
        try {
            String sql = " select * from tab_user where code = ? ";
            user = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), code);
        } catch (DataAccessException e) {
            e.printStackTrace();
        }
        return user;
    }

1.2.5.4改Status值

  @Override
    public boolean setStatus(User user) {
        //逻辑很简单自己看。0_0
        String sql = "update tab_user set status = 'Y' where uid = ?";
        int update = jdbcTemplate.update(sql, user.getUid());
        if (update > 0) {
            return true;
        }else {
            return false;
        }

    }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值