1. 程式人生 > >小專案製作:javaWeb之郵箱驗證註冊(javaMail+jdbc+log4j)

小專案製作: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基礎學習JavaWebServlet

其他更多java基礎文章: java基礎學習(目錄) 什麼是Servlet Servlet是一個特殊的Java類, 是執行在 Web 伺服器中的小型 Java 程式(即:伺服器端的小應用程式)。servlet 通常通過 HTTP(超文字傳輸協議)接收和響應來自 Web 客戶端的請求。這個Java類必須

java基礎學習JavaWebEL表示式

其他更多java基礎文章: java基礎學習(目錄) 一、EL表示式 EL 全名為Expression Language。JSP中可以使用EL表示式,EL表示式是用"${}"括起來的指令碼,用來更方便地讀取物件,EL表示式寫在JSP的HTML程式碼中,而不能寫在"<%%>"引起的JSP指令

java基礎學習JavaWebCookie和Session

其他更多java基礎文章: java基礎學習(目錄) 一、會話概述 1.1、什麼是會話? 會話可簡單理解為:使用者開一個瀏覽器,點選多個超連結,訪問伺服器多個web資源,然後關閉瀏覽器,整個過程稱之為一個會話其中不管瀏覽器傳送多少請求,都視為一次會話,直到瀏覽器關閉,本次會話結束。 其中注意,一個瀏

java基礎學習JavaWebJSP

其他更多java基礎文章: java基礎學習(目錄) 本章內容較多,全部認真看完可能需要一小時以上,建議邊看邊做筆記,否則容易混亂 一、JSP概述 1.1、JSP結構 網路伺服器需要一個JSP引擎,也就是一個容器來處理JSP頁面。容器負責截獲對JSP頁面的請求。內嵌JSP容器的Apache支援JS

java基礎學習JavaWebrequest和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