SpringMVC(8) 模拟邮件验证实现注册登录
注意:网络的邮箱 --> 存在授权的问题
邮箱验证:实际上是在注册账号的同时生成了一个随机码,在发送邮件的时候,根据随机码去更改账号的状态
第一步:安装邮箱服务器和客户端
第二步:项目导入邮件jar包 (点击下载邮件所需资源 密码:mben)
第三步:项目中使用代码发送邮件
我的数据库user表:
项目中发送邮件的代码体现在service中:
public interface IUserService {User queryOne(User user)throws Exception;void update(User user)throws Exception;void addUser(User user)throws Exception;
}
@Service
public class UserServiceImpl implements IUserService {@Autowiredprivate UserDaoImpl dao;@Overridepublic User queryOne(User user) throws Exception {return dao.queryOne(user);}@Overridepublic void update(User user) throws Exception {System.out.println(user.getUuid());dao.update(user);}@Overridepublic void addUser(User user) throws Exception {user.setUuid(UUID.randomUUID().toString());//生成一个uuiddao.addUser(user);//发送邮件Properties prop = new Properties();prop.setProperty("mail.host", "192.168.43.66");//192.168.43.66 --> 本地ip地址prop.setProperty("mail.transport.protocol", "smtp");prop.setProperty("mail.smtp.auth", "true");// 使用JavaMail发送邮件的5个步骤// 1、创建sessionSession session = Session.getInstance(prop);// 开启Session的debug模式,这样就可以查看到程序发送Email的运行状态session.setDebug(true);// 2、通过session得到transport对象Transport ts = session.getTransport();// 3、使用邮箱的用户名和密码连上邮件服务器,发送邮件时,发件人需要提交邮箱的用户名和密码给smtp服务器,用户名和密码都通过验证之后才能够正常发送邮件给收件人。ts.connect("192.168.43.66", "a", "a");// 4、创建邮件Message message = createSimpleMail(session,user.getUuid());// 5、发送邮件ts.sendMessage(message, message.getAllRecipients());ts.close();}public MimeMessage createSimpleMail(Session session,String uuid) throws Exception {// 创建邮件对象MimeMessage message = new MimeMessage(session);// 指明邮件的发件人message.setFrom(new InternetAddress("a@zhengqing.com"));// 指明邮件的收件人,现在发件人和收件人是一样的,那就是自己给自己发message.setRecipient(Message.RecipientType.TO, new InternetAddress("b@zhengqing.com"));// 邮件的标题message.setSubject("只包含文本的简单邮件");// 邮件的文本内容message.setContent("你好:<a href='http://localhost:8080/zq/update.do?uuid="+uuid+"'>验证用户注册</a>", "text/html;charset=UTF-8");// 返回创建好的邮件对象return message;}}
dao层实现数据的增删改查:
public interface IUserDao {User queryOne(User user)throws Exception;void update(User user)throws Exception;void addUser(User user)throws Exception;
}
@Repository
public class UserDaoImpl implements IUserDao {@Autowiredprivate JdbcTemplate jt;@Overridepublic User queryOne(User user) {User u = null;try {String sql = "select * from user where isenabled=true and username=?";//如果不捕获异常 --> ResultSet is emptyu = (User) jt.queryForObject(sql, new BeanPropertyRowMapper(User.class), user.getUsername());} catch (Exception e) {e.printStackTrace();return null;}return u;}@Overridepublic void update(User user) throws Exception {System.out.println("updateUser======");String sql="update user set isenabled=true,uuid=null where uuid=?";jt.update(sql,user.getUuid());System.out.println("updateUser==后======");}@Overridepublic void addUser(User user) throws Exception {System.out.println("addUser======");String sql="insert into user(username,password,uuid) values(?,?,?)";jt.update(sql,user.getUsername(),user.getPassword(),user.getUuid());System.out.println(sql+"-======-");}}
controller控制层做页面跳转逻辑处理:
@Controller
public class LoginController {@Autowiredprivate UserServiceImpl service;@RequestMapping("/login.do")public String login(User user,HttpSession session) throws Exception {User u = service.queryOne(user);if (u == null) {return "redirect:/login.html";} else {if (user==null || !user.getPassword().equals(u.getPassword())) {return "redirect:/login.html";}}session.setAttribute("user", u);return "/index.html";}@RequestMapping("/signup.do")public String signup(User user) throws Exception{/*** 注册用户* 1.存储数据* 2.发送邮件*/System.out.println("signup.do前====");service.addUser(user);System.out.println("signup.do新增后====");return "redirect:/login.html";}//验证方法 127.0.0.1/zq/update?uuid=值@RequestMapping("/update.do")public String update(User user) throws Exception{/*** 注册用户* 1.存储数据* 2.发送邮件*/service.update(user);return "redirect:/login.html";}}
登录注册页面-->写的很简单,主要看邮件验证的功能实现
login.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登录页面</title>
</head>
<body align="center"><h1>登录页面</h1><form action="/zq/login.do" method="post">用户名:<input type="text" name="username" placeholder="账号/手机号/邮箱"><br /> 密码:<input type="text" name="password" placeholder="密码"><br /> <button type="submit">登 录</button></form>
</body>
</html>
register.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body align="center"><h1>注册页面</h1><form action="/zq/signup.do" method="post">用户名:<input type="text" name="username" placeholder="用户名"><br /> 密码:<input type="text" name="password" placeholder="密码"><br /> <input type="submit"><br /></form>
</body>
</html>
具体代码看分享的项目资源吧~ 点击下载资源 密码: v5yw
这里简单说下我的邮箱设置之类的吧
邮箱服务端: -->我新建的是a和b两个账号
邮箱客服端:
发送邮件
SpringMVC(8) 模拟邮件验证实现注册登录相关推荐
- 10分钟搞定Java带token验证的注册登录
这是spring boot框架下的登录注册功能,并且带有token验证,可以用于生产环境的实例 原理太简单,直接上代码,让你知道什么叫拿来主义!! 1,java中项目介绍 2,resources 中的 ...
- springboot+springsecurity+阿里云短信服务验证实现注册登录
使用springboot+security+Aliyun短信服务实现注册登录 为了实现个人博客部分的登录注册,我采用了阿里云短信服务发送验证码,后端比对验证码的方式完成注册,现在功能还不完全,以后这个 ...
- php注册登录遍写入 遍验证,自动注册登录验证机制的php代码
在phpwind站点后台添加"广告管家"(CNZZ的一款广告投放的应用)的应用,整个"广告管家"通过iframe载入,载入的具体内容根据不同站点显示针对该站点的 ...
- Jsp+Servlet+MYSQL注册登录案例(界面难看,ε=(´ο`*)))唉)
注册登录界面尤为常见,我的界面尤为难看,勉为其难的写吧,前端不熟就是这样... 这个案例运用到了: 1.Jsp动态页面--->动态页面 2.Servlet逻辑判断后台---->实现界面与数 ...
- SpringMVC 实现注册登录
记录一下SpringMVC实现注册登录功能这个小程序. 一.新建动态Dynamic Web Project: 新建Dynamic Web Project,项目名为LoginSpringMVC 导入相应 ...
- spring mvc 模拟数据库实现注册 登录
model层代码,用户 package com.entity; import java.io.Serializable;public class User implements Serializabl ...
- 使用Bmob云端服务器模拟简单的注册登录
前一阶段看徐宜生写的Android群英传里面介绍的搭建云端服务器,那个时候自己不懂,加上有其他的学习,就没有深入,但是这两天找了资料研究了一下,读了官方文档,感觉挺不错的,服务端不用自己搭建了.(听说 ...
- JAVA之模拟注册登录幸运抽奖
1.控制台程序开发. 2.变量和运算符. 3.数据类型与数组. 4.流程控制语句. 5.检测:模拟注册登录幸运抽奖全过程:主要功能 :注册.登录.幸运抽奖. 打开我们的记事本,写一段代码: impo ...
- 原生js验证简洁美观注册登录页面
本文转载自: https://www.cnblogs.com/storm-chou/p/6189489.html 作者:storm-chou 转载请注明该声明. 序 一个以js验证表单的简洁的注册登录 ...
最新文章
- 你知道 URL 后面的这些 utm_xxx 参数都是干嘛的吗?
- jdk和tomcat配置
- [Ubuntu] 解决 pip 安装 lxml 出现 x86_64-linux-gnu-gcc 异常
- python 自动化办公 uibot_【插件开发】使用 Python 扩展 UiBot 的功能
- 动态照片墙 python 实现_利用python生成照片墙的示例代码
- mysql读写分离 同步_MySQL数据库的同步配置+MySql读写分离
- 抖音“市长带你看湖北”首场直播:总成交额1793万元
- 【medium】220. Contains Duplicate III
- Hadoop笔记整理(三):Zookeeper
- JavaScript人脸检测的实现方法
- [转]使用Hyper-V BPA(Best Practices Analyzer-最佳化分析工具)
- linux 小度wifi,树莓派2小度wifi(MT7601U)驱动
- 实验06 分析IP报文结构实验报告
- 教你ogg怎么转mp3格式
- 【DPD数字预失真】射频功放的Volterra级数数字预失真系统开发
- 计算H时M分S秒以后是_关于工程量计算-深圳工程量计算培训
- 用户正确使用趋势跟随的交易系统的方法
- 虚拟化技术——VLAN策略
- Qt5嵌入式桌面输入法实现最新指南与DBUS调试工具
- 使用nginx模拟反向代理