04-商城 邮箱激活

收到激活邮件后,下面的操作就是点击进行激活操作。

激活的结果也就是两种:

1.激活成活

2.激活失败


实现逻辑

  1. 点击邮箱中的链接,向商城userservlet发送一个请求

    user?method=active&code=****
    
  2. 在userservlet中编写active方法

    接收code
    调用service 完成激活
    生成提示信息(激活成功或者失败)
    
  3. 在service中编写激活方法

    通过code获取用户
        如果没有找到,则激活失败,提示用户重新激活或者重新注册
        如果找到了,设置激活状态为1,同时清空code
    
  4. 在dao中需要编写两个方法

    getByCode
    

update

具体实现

  1. 在邮箱客户端中接收到邮件后,点击激活链接
    这里写图片描述
  2. active方法实现
    /**
     * 用户激活
     *
     * @param req
     * @param resp
     * @return
     * @throws ServletException
     * @throws IOException
     */
    public String active(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        try {
            //1. 接收code
            String code = req.getParameter("code");

            //2. 调用service完成激活
            UserService us = new UserServiceImpl();
            User user = us.active(code);

            //3. 判断user 生成不同的提示信息
            if (null == user) {
//            没有找到这个用户 激活失败
                req.setAttribute("msg", "激活失败,请重新激活或者重新注册");
                return "/jsp/msg.jsp";
            }
//        激活成功
            req.setAttribute("msg", "恭喜您激活成功,可以登录了");
        } catch (Exception e) {
            e.printStackTrace();
            req.setAttribute("msg", "激活失败,请重新激活或者重新注册");
        }
        return "/jsp/msg.jsp";
    }
  1. service中实现激活
    @Override
    public User active(String code) throws Exception {
//        1. 通过code 获取用户
        UserDao ud=new UserDaoImpl();
        User user=ud.getByCode(code);
//        1.1 通过激活码没有找到用户
        if (null==user)
            return null;

//        2.如果获取到了用户
        user.setState(Constant.USER_IS_ACTIVE);
        user.setCode(null);
        ud.update(user);
        return user;
    }
  1. dao中根据code查找用户,同时实现用户的更新
    /**
     * 通过激活码获取用户
     *
     * @param code
     * @return
     * @throws Exception
     */
    @Override
    public User getByCode(String code) throws Exception {
        QueryRunner qr = new QueryRunner(DataSourceUtils.getDataSource());
        String sql = "select * from user where code = ? limit 1";
        return qr.query(sql, new BeanHandler<User>(User.class), code);
    }

    /**
     * 更新用户
     *
     * @param user
     * @throws Exception
     */
    @Override
    public void update(User user) throws Exception {
        QueryRunner qr = new QueryRunner(DataSourceUtils.getDataSource());
        String sql = "update user set password = ? , sex = ? , state = ? where uid = ? ";
        qr.update(sql, user.getPassword(), user.getSex(), user.getState(), user.getUid());
    }

源码地址

猜你喜欢

转载自blog.csdn.net/lucky9322/article/details/79511790