UserService

 1 // 激活功能更
 2     public void activation(String code) throws UserException {
 3         /*
 4          * 1通过激活码查询用户 2如果用户为Null说明是无效激活码 抛出异常 给出异常信息 3、查看用户状态为true
 5          */
 6
 7         try {
 8             User user = userDao.findByCode(code);
 9             if (user == null)
10                 throw new UserException("无效的激活码");
11             if (user.isStatus())
12                 throw new UserException("您已经激活过了,不能二次激活!");
13             userDao.updateStatus(user.getUid(), true);
14         } catch (SQLException e) {
15             // TODO Auto-generated catch block
16             throw new RuntimeException(e);
17         }
18     }
19
20     // 注册功能
21     public void regist(User user) {
22         // 1、数据的补齐
23         user.setUid(CommonUtils.uuid()); // commonUtils用来生成唯一的码
24         user.setStatus(false);
25         user.setActivationCode(CommonUtils.uuid() + CommonUtils.uuid());
26         // 2、项数据库中插入
27
28         try {
29             userDao.add(user);
30         } catch (SQLException e) {
31             // TODO Auto-generated catch block
32             e.printStackTrace();
33         }
34         /*
35          * 3、发邮件
36          */
37         Properties prop = new Properties();
38         // 加载配置文件
39         try {
40             prop.load(this.getClass().getClassLoader()
41                     .getResourceAsStream("email_template.properties"));
42         } catch (IOException e1) {
43             throw new RuntimeException(e1);
44         }
45         // 登录邮件服务器得到session 发送mail对象
46         String host = prop.getProperty("host");// 服务器主机名
47         String username = prop.getProperty("username");// 登录名
48         String password = prop.getProperty("password");
49         Session session = MailUtils.createSession(host, username, password);
50
51         // 创建mail对象
52         String from = prop.getProperty("from");
53         String to = user.getEmail();
54         String subject = prop.getProperty("subject"); // 主题
55         // messageformat用来替换占位符 pattern中的{0}{1}{2}占位符用第二个,第三个,第四个参数来替换
56         String content = MessageFormat.format(prop.getProperty("content"),
57                 user.getActivationCode());
58
59         try {
60             MailUtils.send(session, new Mail(from, to, subject, content));
61         } catch (MessagingException e) {
62             throw new RuntimeException(e);
63         } catch (IOException e) {
64             throw new RuntimeException(e);
65         }
66
67     }

View Code

UserDao

 1 /通过激活码查询用户
 2     public User findByCode(String code)
 3     {
 4         String sql="select * from t_user where activationCode=?";
 5         try {
 6             return qr.query(sql, new BeanHandler<User>(User.class),code);
 7         } catch (SQLException e) {
 8             // TODO Auto-generated catch block
 9             throw new RuntimeException(e);
10         }
11     }
12     //更新激活状态
13     public void updateStatus(String uid,boolean status) throws SQLException
14     {
15         String sql="update t_user set status=? where uid=?";
16         qr.update(sql,status,uid);
17
18     }

View Code

UserServlet

 1 // 注册功能
 2     public String regist(HttpServletRequest req, HttpServletResponse resp)
 3             throws ServletException, IOException {
 4         // 1、封装表单数据到user对象中
 5         User formUser = CommonUtils.toBean(req.getParameterMap(), User.class);
 6
 7         // 2、校验 如果校验 失败 保存错误信息返回到regist页面显示
 8
 9         /*
10          * 调用validateRegist方法,检验Map是否为空 如果为空 则说明没有错误信息 否则
11          * 则有错误新信息,把map保存到request中 转发到regist.jsp
12          */
13         Map<String,String> errors= validateRegist(formUser, req.getSession());
14         if(errors.size()>0)
15         {  //错误信息的时候 把表单数据带回去
16             req.setAttribute("form", formUser);
17            req.setAttribute("errors", errors);
18         return "f:/jsps/user/regist.jsp";
19         }
20         // 3、使用service完成业务
21         userService.regist(formUser);
22
23         // 4、保存成功信息转发到msg.jsp显示
24         req.setAttribute("code", "success");
25         req.setAttribute("msg", "注册成功,请马上到邮箱激活");
26         return "f:/jsps/msg.jsp"; // f代表转发 入request里面放有东西 BaseServlet实现的转发
27     }
28
29     // 完成注册校验功能  对表单的字段进行逐个校验
30
31     private Map<String, String> validateRegist(User formUser,HttpSession session) {
32         Map<String, String> errors = new HashMap<String, String>();
33         // 校验用户名
34         String loginname = formUser.getLoginname();
35         if (loginname == null || loginname.trim() == null)
36             errors.put("loginname", "用户名不能为空");
37         else if (loginname.length() < 3 || loginname.length() > 20)
38             errors.put("loginname", "用户名长度必须在3-20字符中");
39         else if (!userService.ajaxValidateLoginname(loginname))
40             errors.put("loginname", "用户名已被注册");
41         // 校验登录密码
42         String loginpass = formUser.getLoginpass();
43         if (loginpass == null || loginpass.trim() == null)
44             errors.put("loginpass", "密码不能为空");
45         else if (loginpass.length() < 3 || loginpass.length() > 20)
46             errors.put("loginpass", "密码长度必须在3-20字符中");
47         // 确认密码校验
48         String reloginpass = formUser.getReloginpass();
49         if (reloginpass == null || reloginpass.trim() == null)
50             errors.put("reloginpass", "密码不能为空");
51         else if (reloginpass.length() < 3 || reloginpass.length() > 20)
52             errors.put("reloginpass", "密码长度必须在3-20字符中");
53         else if(!reloginpass.equals(loginpass))
54             errors.put("reloginpass", ",两次输入密码不一致");
55
56         //email校验
57         String email = formUser.getEmail();
58         if (email == null || email.trim() == null)
59             errors.put("email", "email不能为空");
60         else if (!email.matches("^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\\.[a-zA-Z0-9_-]{2,3}){1,2})$"))
61             errors.put("email", "email格式不正确");
62         else if (!userService.ajaxValidateEmail(email))
63             errors.put("email", "email已被注册");
64
65         //验证码校验
66        String verifyCode=formUser.getVerifyCode();
67        String vCode=(String) session.getAttribute("vCode");
68        if (verifyCode == null || verifyCode.trim() == null)
69             errors.put("verifyCode", "验证码不能为空");
70         else if (!verifyCode.equalsIgnoreCase(vCode))
71             errors.put("verifyCode", "验证码错误!");
72
73         return errors;
74
75
76     }
77
78     // 激活功能
79     public String activation(HttpServletRequest req, HttpServletResponse resp) {
80         //System.out.println("activation");
81         //1、获取激活码
82         //2、交给service 的 activation功能来激活
83         //service方法可能跑出异常 把异常信息拿来保存到request中
84         //转发到msg.jsp显示
85         String code=req.getParameter("activationCode");
86         try {
87             userService.activation(code);
88             req.setAttribute("code", "success");
89             req.setAttribute("msg", "恭喜激活成功,请马上登录!");
90         } catch (UserException e) {
91             req.setAttribute("msg", e.getMessage());
92             req.setAttribute("code", "error");
93
94         }
95         return "f:/jsps/msg.jsp";
96     }
97 }

View Code

转载于:https://www.cnblogs.com/xiaoying1245970347/p/4767767.html

Goods:注册页面保存User功能发送邮件以及激活功实现相关推荐

  1. java 注册页面正则式_Java使用正则表达式对注册页面进行验证功能实现

    本文给大家介绍java使用正则表达式对注册页面进行验证的代码,代码如下所示:package regex; import java.util.Scanner; import java.util.rege ...

  2. element-plus+vite+guiplan注册页面添加验证码功能

    element-plus+vite+guiplan注册页面添加验证码功能 element-plus+vite+guiplan注册页面添加验证码功能 介绍 步骤 总结 element-plus+vite ...

  3. java验证注册页面_Java使用正则表达式对注册页面进行验证功能实现

    本文给大家介绍java使用正则表达式对注册页面进行验证的代码,代码如下所示: package regex; import java.util.Scanner; import java.util.reg ...

  4. 完整登录、注册页面(无功能)

    参考连接: https://www.cnblogs.com/qxxblogs/p/12388482.html https://www.cnblogs.com/knuzy/p/9993181.html ...

  5. 使用html,css,javascript进行注册页面的实现

    注册页面的实现 功能 实现一个用户注册页面 实现表单校验功能 效果图 实现步骤 1) 创建Resign.html注册页面 核心代码: <!--注册表--> <div id=" ...

  6. Vue项目实战——【基于 Vue3.x + Vant UI】实现一个多功能记账本(登录注册页面,验证码)

    基于 Vue3.x + Vant UI 的多功能记账本(四) 文章目录 基于 Vue3.x + Vant UI 的多功能记账本(四) 项目演示 1.登录注册页面 2.图片验证码 3.修改 axios ...

  7. php登陆页面修改密码的功能,使用bootstrap创建登录注册页面并实现表单验证功能...

    本篇文章给大家介绍一下使用bootstrap创建登录注册页面并实现单验证功能的方法.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 用bootstrap做登入注册页面,使用valid ...

  8. 页面实现自动保存内容功能

    实现自动保存功能有3三种方式 大家好,我是音神,最近在写功能的时候,遇到了自动保存内容功能,花了很久的时间,废了很多的心血,终于把它写完了,下面就来跟大家聊聊我的实现方式,哈哈哈,每次分享知识心里总是 ...

  9. C语言学生学籍管理系统源程序|用数据文件存放学生的学籍,可对学生学籍进行注册,登录,修改,删除,查找,统计,学籍变化等操作。(用文件保存) 功能要求: (1) 系统以菜单方式工作。 (2) 登记学生的

    学生学籍管理系统 用数据文件存放学生的学籍,可对学生学籍进行注册,登录,修改,删除,查找,统计,学籍变化等操作.(用文件保存) 功能要求: (1) 系统以菜单方式工作. (2) 登记学生的学号,姓名, ...

最新文章

  1. 连续发表三篇核酸研究数据库文章
  2. socket.io的 Python客户端中文encode问题
  3. dom不刷新 vue 加数据后_高频出现的Vue 面试题及答案
  4. 从零开始入门 K8s | Kubernetes 网络模型进阶
  5. Python scrapy 命令行传参 以及发送post请求payload参数
  6. ibd文件如何变为json_如何轻松了解 Python 必学的 django 框架?
  7. 泛型类、泛型方法及泛型应用
  8. JobDataMap 更新_04
  9. dhtmlXTree 指南与实例(一)
  10. 巧用 PHP 数组函数 1
  11. 基于python的作业管理系统_python day18 作业 Django 开发主机管理系统
  12. Linux tcp三次握手,解读TCP三次握手
  13. java jstl foreach用法_JSTL 中c:forEach使用
  14. 从app加载页面说开去
  15. 实验室服务器安装虚拟机,如何使用VM虚拟机创建私有网络试验室
  16. Ubuntu配置 PPTP 服务器端
  17. Java 2实用教程(第五版)
  18. TIFF文件结构详解
  19. 增广矩阵and线性方程组----线性代数
  20. 手机端获取用户详细地理位置(腾讯地图/高德)

热门文章

  1. 神经网络的叛离:32年前从心理学与生理学分离的瞬间
  2. 超级干货丨优美的课程笔记,吴恩达点赞的深度学习课程信息图
  3. (完全解决)ValueError: Invalid RGBA argument: 0.2
  4. (深入理解)matplotlib绘图原理(figure,axes,axis,canvas的区别)
  5. 深度报告:芯片设计EDA 2.0时代,三大路径搞定六大挑战
  6. 离奇的梦境,能够防范大脑过拟合
  7. PNAS “深度学习的科学”论文合集导读
  8. 蕨叶形生物刷新生命史,动物界至少起源于5.7亿年前
  9. 2019版中国数字经济发展与就业白皮书
  10. 杨立昆辞Facebook人工智能实验室主任,任首席科学家