小项目制作:javaWeb之邮箱验证注册(javaMail+jdbc+log4j)
来源:互联网 发布:剑灵召唤师女捏脸数据 编辑:程序博客网 时间:2024/05/29 13:29
功能设计:
架构设计:
注册时通过发送邮件方式,传递访问项目激活的servlet进行改写数据库中active的值,通过传递激活码acode来辨别数据库中是否有该账户信息
注册功能实现:
servlet:
package cn.hncu.reg.servlet;import java.io.IOException;import java.io.PrintWriter;import java.sql.SQLException;import java.util.Properties;import javax.mail.Authenticator;import javax.mail.MessagingException;import javax.mail.PasswordAuthentication;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.AddressException;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;import javax.mail.internet.MimeMessage.RecipientType;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import cn.hncu.domain.User;import cn.hncu.reg.service.RegService;import cn.hncu.reg.service.RegServiceimpl;import cn.hncu.utils.SendMailThread;public class RegServlet extends HttpServlet { RegService service = new RegServiceimpl(); public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); PrintWriter out = response.getWriter(); out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">"); out.println("<HTML>"); out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>"); out.println(" <BODY>"); String name = request.getParameter("name"); String pwd = request.getParameter("pwd"); String email = request.getParameter("email"); User user = new User(); user.setName(name); user.setPwd(pwd); user.setEmail(email); try { user = service.reg(user); if (user != null) { // 发激活邮件 new SendMailThread(user).start(); out.println("您已经成功注册,请到邮箱中激活"); } else { out.println("注册失败"); } } catch (SQLException e) { out.println("注册失败"); } out.println(" </BODY>"); out.println("</HTML>"); out.flush(); out.close(); }}
dao:
package cn.hncu.reg.dao;import java.sql.SQLException;import java.util.UUID;import org.apache.commons.dbutils.QueryRunner;import cn.hncu.domain.User;import cn.hncu.utils.C3p0Utils;public class RegDAOimpl implements RegDAO { @Override public User reg(User user) throws SQLException { String sql = "insert into users(id,name,pwd,email,active,acode) values(?,?,?,?,?,?)"; QueryRunner run = new QueryRunner(C3p0Utils.getComboPooledDataSource()); String id = UUID.randomUUID().toString().replace("-", ""); String acode = UUID.randomUUID().toString().replace("-", ""); int n = run.update(sql, id, user.getName(), user.getPwd(), user.getEmail(), "0", acode); if (n > 0) { user.setId(id); user.setActive("0"); user.setAcode(acode); return user; } else { return null; } }}
sendMailutils:
package cn.hncu.utils;import java.util.Date;import java.util.Properties;import javax.mail.Authenticator;import javax.mail.MessagingException;import javax.mail.PasswordAuthentication;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.AddressException;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;import javax.mail.internet.MimeMessage.RecipientType;import org.apache.log4j.Logger;import cn.hncu.domain.User;public class SendMailThread extends Thread{ Logger log = Logger.getLogger(SendMailThread.class); private User user=null; public SendMailThread(User user) { this.user = user; } @Override public void run() { try { Properties p = new Properties(); p.setProperty("mail.host", "smtp.sina.com"); p.setProperty("mail.smtp.auth", "true");//认证登录 Session session = Session.getDefaultInstance(p, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("hncujava","hncu1234567"); } }); session.setDebug(true);//以debug方式(应答方式)进行通讯 //准备邮件 MimeMessage msg = new MimeMessage(session); //从session中创建邮件 msg.setFrom( new InternetAddress("hncujava@sina.com") ); msg.setRecipient(RecipientType.TO, new InternetAddress( user.getEmail() ) );////※※※ msg.setSubject("账号激活邮件,城院公司欢迎你!"); String info = "激活:<a href='http://127.0.0.1:8080/mailWeb1602/ActiveServlet?acode="+user.getAcode()+"'>激活</a>"; info = info + "<br/>如果激活未成功,请把地址复制到浏览器进行手动请求以进行激活:http://127.0.0.1:8080/mailWeb1602/ActiveServlet?acode="+user.getAcode(); msg.setContent(info, "text/html;charset=utf-8"); msg.setSentDate( new Date() ); //发送邮件 Transport.send(msg); log.info("邮件成功发送到:"+user.getEmail()); } catch (Exception e) { log.error("邮件发送失败,邮箱地址为:"+user.getEmail()); //e.printStackTrace(); } }}
result.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><script type="text/javascript"> var i = 4; function a() { i--; div1.innerHTML = i + "秒钟之后自动登录"; if (i <= 1) { window.clearInterval(tm); window.location.href = "<c:url value='/index.jsp'/>"; } }</script></head><body> <c:if test="${boo }"> 激活成功 <a href="<c:url value='/index.jsp'/>">返回登录页面</a> <div id="div1"></div> <script type="text/javascript"> tm = window.setInterval(aa, 1000); </script> </c:if> <c:if test="${!boo }"> 激活不成功,请检查激活码,或另择时间再激活 </c:if></body></html>
“`
阅读全文
0 0
- 小项目制作:javaWeb之邮箱验证注册(javaMail+jdbc+log4j)
- JavaMail——邮箱验证用户注册
- JavaMail实现注册邮箱验证案例
- Javaweb邮箱验证注册的实现
- Javaweb邮箱验证注册的实现
- JavaWeb应用之邮箱注册激活
- JavaMail进行邮箱验证
- JavaWeb-20 (JDBC之文件上下传与JavaMail)
- Struts2系列登录注册的小项目之验证规则
- 验证邮箱(注册时邮箱的验证)
- JavaWeb JDBC连接MySql数据库小项目
- javamail实现邮箱验证功能
- JavaMail实现邮箱验证码
- Discuz常见小问题-如何设置QQ邮箱注册验证
- Discuz常见小问题-如何设置163邮箱注册验证
- ECMALL注册(邮箱或手机验证)
- SpringBoot邮箱注册验证
- Django 注册邮箱验证
- Tensorflow里的padding操作(VALID和SAME两种)
- date类型字段比较
- OpenCV自学笔记26. 写一个ROI叠加的小例子
- git基本操作方法整理
- LTE系统调试记录12:接收端画星座图
- 小项目制作:javaWeb之邮箱验证注册(javaMail+jdbc+log4j)
- Android自定义view之筛选按钮
- iOS 字典和数组写入plist文件存到应用沙盒当中(含读取)
- Spring 框架的设计理念与设计模式分析
- ubuntu下安装thrift
- python进行机器学习中的SVM
- java Class与静态初始化
- jemalloc横向分析(六)tcache_event事件执行
- CodeForces