小專案製作:javaWeb之郵箱驗證註冊(javaMail+jdbc+log4j)
功能設計:
架構設計:
註冊時通過傳送郵件方式,傳遞訪問專案啟用的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("[email protected]") );
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>
“`
相關推薦
小專案製作:javaWeb之郵箱驗證註冊(javaMail+jdbc+log4j)
功能設計: 架構設計: 註冊時通過傳送郵件方式,傳遞訪問專案啟用的servlet進行改寫資料庫中active的值,通過傳遞啟用碼acode來辨別資料庫中是否有該賬戶資訊 註冊功能實現: servlet: package cn.hncu.re
javaWeb實現郵箱驗證功能(二)
上篇寫的實現基本上是一個工具類,並沒封裝成下圖這樣方式(梨視訊註冊介面),現在開始完善上篇的java郵箱啟用驗證功。 java郵箱驗證地址:https://blog.csdn.net/BlackPlus28/article/details/85044068 -----------------
轉:Java實現簡訊驗證碼(阿里雲服務商)
1.先去阿里雲開通簡訊服務: 2.新增模板及簽名:需要稽核,個人賬戶稽核就幾分鐘就OK 先解釋一下模板及簽名: 標準參照:https://help.aliyun.com/document_detail/55324.html?spm=5176.sms-sign.0
SSM專案實踐:實現簡易網盤系統(思路+參考原始碼)
一、專案主要功能 1、類似於百度雲,使用者可以在網盤中新建多層資料夾,並可以上傳檔案、下載檔案、刪除檔案、刪除資料夾(裡面所有檔案也會隨之刪除) 2、提供檔案分類功能,可根據字尾名將檔案分成視訊、圖片、音樂等。 3、使用者可以分享檔案,分享的檔案可以在分享
HTML表單之郵箱驗證
學習HTML,表單是一個很重要的知識,而表單最常用的可能就是表單的驗證了;下面我介紹驗證郵箱的一種方法: 先上程式碼:(注:這個程式碼是可以執行的,可以自己試試,把重點放在js和表單裡面!) <!DOCTYPE html> <html> <
java基礎學習:JavaWeb之Servlet
其他更多java基礎文章: java基礎學習(目錄) 什麼是Servlet Servlet是一個特殊的Java類, 是執行在 Web 伺服器中的小型 Java 程式(即:伺服器端的小應用程式)。servlet 通常通過 HTTP(超文字傳輸協議)接收和響應來自 Web 客戶端的請求。這個Java類必須
java基礎學習:JavaWeb之EL表示式
其他更多java基礎文章: java基礎學習(目錄) 一、EL表示式 EL 全名為Expression Language。JSP中可以使用EL表示式,EL表示式是用"${}"括起來的指令碼,用來更方便地讀取物件,EL表示式寫在JSP的HTML程式碼中,而不能寫在"<%%>"引起的JSP指令
java基礎學習:JavaWeb之Cookie和Session
其他更多java基礎文章: java基礎學習(目錄) 一、會話概述 1.1、什麼是會話? 會話可簡單理解為:使用者開一個瀏覽器,點選多個超連結,訪問伺服器多個web資源,然後關閉瀏覽器,整個過程稱之為一個會話其中不管瀏覽器傳送多少請求,都視為一次會話,直到瀏覽器關閉,本次會話結束。 其中注意,一個瀏
java基礎學習:JavaWeb之JSP
其他更多java基礎文章: java基礎學習(目錄) 本章內容較多,全部認真看完可能需要一小時以上,建議邊看邊做筆記,否則容易混亂 一、JSP概述 1.1、JSP結構 網路伺服器需要一個JSP引擎,也就是一個容器來處理JSP頁面。容器負責截獲對JSP頁面的請求。內嵌JSP容器的Apache支援JS
java基礎學習:JavaWeb之request和response
其他更多java基礎文章: java基礎學習(目錄) 學習request和response之前先學習一下http請求 HTTP請求 瀏覽器向伺服器請求某個web資源時,稱之為瀏覽器向伺服器傳送了一個http請求。一個完整http請求應該包含三個部分: 請求行【描述客戶端的請求方式、請求的資源
javaweb傳送郵箱驗證
不一定成功傳送,不知道啥原因 package foreiger.utils; import java.security.Security; import java.util.Date; import java.util.Properties; import javax.mail.Authent
小程式六:元件之基礎內容
<view class="section section_gap"> <text>{{text}}</text> <view class="btn-area"> <button bindtap="add">add li
yii2專案實戰-restful api之授權驗證
什麼是restful風格的api呢?我們之前有寫過大篇的文章來介紹其概念以及基本操作。 既然寫過了,那今天是要說點什麼嗎? 這篇文章主要針對實際場景中api的部署來寫。 我們今天就來大大的侃侃那些年api遇到的授權驗證問題!獨家幹活,如果看完有所受益,記得不要忘記給
python小專案一:NBA比賽資料分析
該專案來源於實驗樓,我這裡只是記錄下自己做完專案的筆記和總結(實驗樓是py2的程式碼,我則是用的py3)。 專案目的:通過分析之前的比賽資料,得到每個隊伍的狀態的特徵表達,利用機器學習訓練迴歸模型,從而對新的比賽進行預測。 為了掌握並實現這個專案,需瞭解一下幾個問題:
Electron 結合WEB專案製作桌面APP之二 ---- electron與web的結合開發體驗
引言 開始嘗試用electron搭建了一個hello world,體驗還是挺不錯的,對於一個web開發者來說,能把自己的開發成果做成一個桌面app,那將是一步巨大的跨越 藉此,再深入學習後
練手小專案一:JAVA聊天室原始碼
客戶端: import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; imp
Python程式設計:Django之安全驗證
涉及內容 裝飾器 cookie session form驗證 快取 中介軟體 訊號 csrf 分頁 一、裝飾器 鑑權裝飾器函式 def auth(func): # 使用者驗證的裝飾器 def inner(re
Python小專案四:實現簡單的web伺服器
本部落格是整理在學習實驗樓的課程過程中記錄下的筆記形成的,參考:https://www.shiyanlou.com/courses/552。不同之處在於實驗樓使用python2.7,而博主這裡使用的是python3.6。在學習中也因為python版本不同遇到了一些坑,這裡寫
【JavaScript小專案】正則表示式實現使用者註冊輸入資訊驗證(包含彈窗和innerHTML驗證)
本博主要是運用正則表示式,登陸介面進行出生日期選擇,用到年月日的三級聯動,第一種驗證方式用到的innerHTML的的動態驗證輸入資訊,第二種驗證方式利用陣列彈窗驗證。效果:圖1.1圖1.2圖1.3圖1.4程式碼:登入頁面的login.html的,主要是年月日三級聯動 <
黃聰:FFmpeg視頻轉碼技巧之-crf參數(H.264篇)
文件中 one log 它的 忽略 enter center tail vcd 昨天,有個朋友給我出了個難題:他手上有一個視頻,1080P的,49秒,200多兆;要求在確保質量的情況下把文件壓縮到10M以內。 這是什麽概念呢?按照文件大小10M來計算,碼率是:10 x 8