网站注册
需要用到的jar包
activation-1.1.1.jar
mail-1.4.7.jar
在tomcat一樣要導入這兩個jar包
代碼
前端注冊頁面
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%--注冊填寫郵箱的前端頁面--%> <html> <head><title>注冊</title> </head> <body><form action="${pageContext.request.contextPath}/RegisterServlet.do" method="post">用戶名:<input type="text" name="username"><br/>密碼:<input type="password" name="password"><br/>郵箱:<input type="text" name="email"><br/><input type="submit" value="注冊"> </form></body> </html>成功頁面
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Title</title> </head> <body><h1>網站溫馨提示</h1> ${message}</body> </html>- ?servlet
導包和文件上傳一樣?
import com.jiuqi.pojo.User; import com.jiuqi.utils.Sendmail;import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException;public class RegisterServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1、接收用戶填寫的表單數據String username = req.getParameter("username");String password = req.getParameter("password");String email = req.getParameter("email");User user = new User(username,password,email);//用戶注冊成功后,給用戶發送一封郵件,為防止出現耗時我們用線程發送郵件Sendmail send = new Sendmail(user);//獲取子線程對象send.start();//3、視圖跳轉req.setAttribute("message","注冊成功!我們已經向您的郵箱發送了郵件,請您及時進行查收。由于網絡原因,您收到郵件的時間存在延遲,敬請諒解~");req.getRequestDispatcher("info.jsp").forward(req,resp);System.out.println(username);System.out.println(password);System.out.println(email);} }- 多線程utils
注意導包的問題,導包錯誤會導致報錯
package com.jiuqi.utils;import com.jiuqi.pojo.User; import com.sun.mail.util.MailSSLSocketFactory;import javax.mail.*; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import java.util.Properties;//網站三秒原則 //多線程提高用戶體驗 public class Sendmail extends Thread{private String from = "2096253166@qq.com";//我們用來向客戶發送郵件的郵箱private String username = "=2096253166@qq.com";//用于登陸SMTP服務器的用戶名private String password = "blevussgzpurfcjg";//授權碼private String host = "smtp.qq.com";private User user;public Sendmail(User user) {this.user = user;//用于獲取用戶郵箱地址}@Overridepublic void run() {try{Properties prop = new Properties();prop.setProperty("mail.host", host); //設置QQ郵件服務器prop.setProperty("mail.transport.protocol", "smtp"); // 郵件發送協議prop.setProperty("mail.smtp.auth", "true"); // 需要驗證用戶名密碼// 關于QQ郵箱,還要設置SSL加密,加上以下代碼即可MailSSLSocketFactory sf = new MailSSLSocketFactory();sf.setTrustAllHosts(true);prop.put("mail.smtp.ssl.enable", "true");prop.put("mail.smtp.ssl.socketFactory", sf);//使用JavaMail發送郵件的5個步驟//1、創建定義整個應用程序所需的環境信息的 Session 對象//使用QQ郵箱的時候才需要,其他郵箱不需要這一段代碼Session session = Session.getDefaultInstance(prop, new Authenticator() {//獲取和SMTP服務器的連接對象public PasswordAuthentication getPasswordAuthentication() {//發件人郵件用戶名、授權碼return new PasswordAuthentication("2096253166@qq.com","blevussgzpurfcjg");}});//開啟Session的debug模式,這樣就可以查看到程序發送Email的運行狀態session.setDebug(true);//2、通過session得到transport對象Transport ts = session.getTransport();//通過這一次和SMTP服務器的連接對象獲取發送郵件的傳輸對象//3、使用郵箱的用戶名和授權碼連上SMTP郵件服務器,即登陸ts.connect(host, username, password);//4、創建郵件對象MimeMessage——點擊網頁上的寫信//創建一個郵件對象MimeMessage message = new MimeMessage(session);//指明郵件的發件人——在網頁上填寫發件人message.setFrom(new InternetAddress(from));//設置發件人//指明郵件的收件人,現在發件人和收件人是一樣的,那就是自己給自己發——在網頁上填寫收件人message.setRecipient(Message.RecipientType.TO, new InternetAddress(user.getEmail()));//設置收件人//郵件的標題——在網頁上填寫郵件標題message.setSubject("歡迎注冊!");//設置郵件主題//郵件的文本內容——在網頁上填寫郵件內容String info = "恭喜注冊成功!您的用戶名為:"+user.getUsername()+"您的密碼為:" +user.getPassword()+",請妥善保管您的密碼,如有問題請及時聯系網站客服!";message.setContent(info, "text/html;charset=UTF-8");//設置郵件的具體內容//5、發送郵件——在網頁上點擊發送按鈕ts.sendMessage(message, message.getAllRecipients());//6、關閉連接對象,即關閉服務器上的連接資源ts.close();} catch (Exception e) {throw new RuntimeException(e);}} }- pojo
總結
- 上一篇: 2020 GDUT Rating Con
- 下一篇: BZOJ 2563 阿狸和桃子的游戏 贪