Goods:注册页面保存User功能发送邮件以及激活功实现
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功能发送邮件以及激活功实现相关推荐
- java 注册页面正则式_Java使用正则表达式对注册页面进行验证功能实现
本文给大家介绍java使用正则表达式对注册页面进行验证的代码,代码如下所示:package regex; import java.util.Scanner; import java.util.rege ...
- element-plus+vite+guiplan注册页面添加验证码功能
element-plus+vite+guiplan注册页面添加验证码功能 element-plus+vite+guiplan注册页面添加验证码功能 介绍 步骤 总结 element-plus+vite ...
- java验证注册页面_Java使用正则表达式对注册页面进行验证功能实现
本文给大家介绍java使用正则表达式对注册页面进行验证的代码,代码如下所示: package regex; import java.util.Scanner; import java.util.reg ...
- 完整登录、注册页面(无功能)
参考连接: https://www.cnblogs.com/qxxblogs/p/12388482.html https://www.cnblogs.com/knuzy/p/9993181.html ...
- 使用html,css,javascript进行注册页面的实现
注册页面的实现 功能 实现一个用户注册页面 实现表单校验功能 效果图 实现步骤 1) 创建Resign.html注册页面 核心代码: <!--注册表--> <div id=" ...
- Vue项目实战——【基于 Vue3.x + Vant UI】实现一个多功能记账本(登录注册页面,验证码)
基于 Vue3.x + Vant UI 的多功能记账本(四) 文章目录 基于 Vue3.x + Vant UI 的多功能记账本(四) 项目演示 1.登录注册页面 2.图片验证码 3.修改 axios ...
- php登陆页面修改密码的功能,使用bootstrap创建登录注册页面并实现表单验证功能...
本篇文章给大家介绍一下使用bootstrap创建登录注册页面并实现单验证功能的方法.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 用bootstrap做登入注册页面,使用valid ...
- 页面实现自动保存内容功能
实现自动保存功能有3三种方式 大家好,我是音神,最近在写功能的时候,遇到了自动保存内容功能,花了很久的时间,废了很多的心血,终于把它写完了,下面就来跟大家聊聊我的实现方式,哈哈哈,每次分享知识心里总是 ...
- C语言学生学籍管理系统源程序|用数据文件存放学生的学籍,可对学生学籍进行注册,登录,修改,删除,查找,统计,学籍变化等操作。(用文件保存) 功能要求: (1) 系统以菜单方式工作。 (2) 登记学生的
学生学籍管理系统 用数据文件存放学生的学籍,可对学生学籍进行注册,登录,修改,删除,查找,统计,学籍变化等操作.(用文件保存) 功能要求: (1) 系统以菜单方式工作. (2) 登记学生的学号,姓名, ...
最新文章
- 连续发表三篇核酸研究数据库文章
- socket.io的 Python客户端中文encode问题
- dom不刷新 vue 加数据后_高频出现的Vue 面试题及答案
- 从零开始入门 K8s | Kubernetes 网络模型进阶
- Python scrapy 命令行传参 以及发送post请求payload参数
- ibd文件如何变为json_如何轻松了解 Python 必学的 django 框架?
- 泛型类、泛型方法及泛型应用
- JobDataMap 更新_04
- dhtmlXTree 指南与实例(一)
- 巧用 PHP 数组函数 1
- 基于python的作业管理系统_python day18 作业 Django 开发主机管理系统
- Linux tcp三次握手,解读TCP三次握手
- java jstl foreach用法_JSTL 中c:forEach使用
- 从app加载页面说开去
- 实验室服务器安装虚拟机,如何使用VM虚拟机创建私有网络试验室
- Ubuntu配置 PPTP 服务器端
- Java 2实用教程(第五版)
- TIFF文件结构详解
- 增广矩阵and线性方程组----线性代数
- 手机端获取用户详细地理位置(腾讯地图/高德)
热门文章
- 神经网络的叛离:32年前从心理学与生理学分离的瞬间
- 超级干货丨优美的课程笔记,吴恩达点赞的深度学习课程信息图
- (完全解决)ValueError: Invalid RGBA argument: 0.2
- (深入理解)matplotlib绘图原理(figure,axes,axis,canvas的区别)
- 深度报告:芯片设计EDA 2.0时代,三大路径搞定六大挑战
- 离奇的梦境,能够防范大脑过拟合
- PNAS “深度学习的科学”论文合集导读
- 蕨叶形生物刷新生命史,动物界至少起源于5.7亿年前
- 2019版中国数字经济发展与就业白皮书
- 杨立昆辞Facebook人工智能实验室主任,任首席科学家