注册功能实现

注册功能

1.分析

在这里插入图片描述!!因为页面是html格式的,为保证数据传输,请求采用ajax发送

2.代码实现

前端

表单验证

<script>
        function checkUsername(){
    
    
            var username = $("#username");
            var regexp = /^\w{8,20}$/;
            var flag = regexp.test(username.val());
            if(flag){
    
    
                username.css("border","");
            }else{
    
    
                username.css("border","1px solid red");
            }
            return flag;
        }
        function checkPassword(){
    
    
            var password = $("#password");
            var regexp = /^\w{8,20}$/;
            var flag = regexp.test(password.val());
            if(flag){
    
    
                password.css("border","");
            }else{
    
    
                password.css("border","1px solid red");
            }
            return flag;
        }
        function checkEmail(){
    
    
            var email = $("#email");
            var regexp = /^\w+@\w+\.\w+$/;
            var flag = regexp.test(email.val());
            if(flag){
    
    
                email.css("border","");
            }else{
    
    
                email.css("border","1px solid red");
            }
            return flag;
        }
        function checkName(){
    
    
            var name = $("#name");
            var flag = name.val().length != 0;
            if(flag){
    
    
                name.css("border","");
            }else{
    
    
                name.css("border","1px solid red");
            }
            return flag;
        }
        function checkTelephone(){
    
    
            var telephone = $("#telephone");
            var regexp = /^1+\d{10}$/;
            var flag = regexp.test(telephone.val());
            if(flag){
    
    
                telephone.css("border","");
            }else{
    
    
                telephone.css("border","1px solid red");
            }
            return flag;
        }
        function checkBirthday(){
    
    
            var birthday = $("#birthday");
            var flag = birthday.val().length != 0;
            if(flag){
    
    
                birthday.css("border","");
            }else{
    
    
                birthday.css("border","1px solid red");
            }
            return flag;
        }
        function checkCode() {
    
    
            var check = $("#check");
            var flag = check.val().length != 0;
            if(flag){
    
    
                check.css("border","");
            }else{
    
    
                check.css("border","1px solid red");
            }
            return flag;
        }

页面加载完成之后,发送ajax请求,完成注册

$(function(){
    
    
            $("#registerForm").submit(function(){
    
    
                if(checkUsername() && checkPassword() && checkEmail() && checkName()
                    && checkTelephone() && checkBirthday() && checkCode()){
    
    
                    $.post("user/register",$(this).serialize(),function(data){
    
    
                        if(data.flag){
    
    
                            location.href = "register_ok.html";
                        }else{
    
    
                            $("#errorMsg").html(data.errorMsg);
                        }
                    });
                }else{
    
    
                    alert("请填写完整");
                }
                return false;
            });

            $("#username").blur(checkUsername);
            $("#password").blur(checkPassword);
            $("#email").blur(checkEmail);
            $("#name").blur(checkName);
            $("#telephone").blur(checkTelephone);
            $("#birthday").blur(checkBirthday);
            $("#check").blur(checkCode);
        });
后端

servlet

public void register(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
    
        HttpSession session = req.getSession();
        String checkcode = (String)session.getAttribute("CHECKCODE_SERVER");
        String check = req.getParameter("check");
        ResultInfo info = new ResultInfo();
        boolean flag = false;
        if(check.equalsIgnoreCase(checkcode)){
    
    
            session.removeAttribute("CHECKCODE_SERVER");
            Map<String, String[]> map = req.getParameterMap();
            User user = new User();
            try {
    
    
                BeanUtils.populate(user,map);
            } catch (IllegalAccessException e) {
    
    
                e.printStackTrace();
            } catch (InvocationTargetException e) {
    
    
                e.printStackTrace();
            }
            flag = userService.register(user);
            info.setFlag(flag);
            if(!flag){
    
    
                info.setErrorMsg("注册失败");
            }
        }else{
    
    
            info.setFlag(flag);
            info.setErrorMsg("验证码错误");
        }
        ObjectMapper jackson = new ObjectMapper();
        String infostr = jackson.writeValueAsString(info);
        resp.setContentType("application/json;charset=utf-8");
        resp.getWriter().write(infostr);
        //jackson.writeValue(resp.getWriter(),info);
    }
    /**
     * 账号激活
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
    public void active(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
    
        String code = req.getParameter("code");
        boolean flag = userService.active(code);
        String msg;
        if(flag){
    
    
            msg = "激活成功,请<a href='login.html'>登录</a>";
        }else{
    
    
            msg = "激活失败或已激活";
        }
        resp.setContentType("text/html;charset=utf-8");
        resp.getWriter().write(msg);
    }

service

/**
     * 用户注册
     * @return
     */
    @Override
    public boolean register(User user) {
    
    
        User u = userDao.findByUsername(user.getUsername());
        boolean flag = false;
        if(u == null){
    
    
            user.setCode(UuidUtil.getUuid());
            user.setStatus("N");
            userDao.save(user);
            String text = "<p><a href='http://localhost/travel/user/active?code="+user.getCode()+"'>点击完成注册</a></p>";
            MailUtils.sendMail(user.getEmail(),text,"用户激活");
            flag = true;
        }
        return flag;
    }

    /**
     * 用户激活
     * @param code
     * @return
     */
    @Override
    public boolean active(String code) {
    
    
        User user = userDao.isActive(code);
        boolean flag = false;
        if("N".equals(user.getStatus())){
    
    
            userDao.active(code);
            flag = true;
        }
        return flag;
    }

dao

/**
     * 用户注册
     * @param user
     */
    @Override
    public void save(User user) {
    
    
        String sql = "insert into tab_user(username,password,name,birthday,sex,telephone,email,status,code) values(?,?,?,?,?,?,?,?,?)";
        template.update(sql,
                user.getUsername(),
                user.getPassword(),
                user.getName(),
                user.getBirthday(),
                user.getSex(),
                user.getTelephone(),
                user.getEmail(),
                user.getStatus(),
                user.getCode());
    }

    /**
     * 根据用户名查询用户
     * @param username
     * @return
     */
    @Override
    public User findByUsername(String username) {
    
    
        User user = null;
        try{
    
    
            String sql = "select * from tab_user where username = ?";
            user = template.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), username);
        }catch(Exception e){
    
    
            e.printStackTrace();
        }
        return user;
    }
    /**
     * 用户是否激活
     * @param code
     * @return
     */
    @Override
    public User isActive(String code) {
    
    
        String sql = "select * from tab_user where code = ?";
        User user = template.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class),code);
        return user;
    }

    /**
     * 激活用户
     * @param code
     */
    @Override
    public void active(String code) {
    
    
        String sql = "update tab_user set status = 'Y' where code = ?";
        template.update(sql,code);
    }

猜你喜欢

转载自blog.csdn.net/weixin_41058733/article/details/108124268