هذا المشروع هو مشروع يجمع بين Javaweb و Email. يجب أن يقوم موقع الويب المحاكي بتنشيط حساب البريد الإلكتروني قبل استخدامه.
إنشاء قاعدة بيانات
قم بإنشاء مستخدم الجدول (ID Varchar (32) المفتاح الأساسي ، الاسم Varchar (30) ، PWD varchar (20) ، البريد الإلكتروني Varchar (20) ، char النشط (1) ، acode varchar (32))
user.java كائن القيمة
حزمة cn.hncu.reg.domain ؛ استيراد javax.persistence.table ؛ مستخدم الفئة العامة {private string id ؛ اسم السلسلة الخاصة ؛ سلسلة خاصة PWD ؛ سلسلة خاصة acode. سلسلة خاصة نشطة ؛ البريد الإلكتروني الخاص بالسلسلة الخاصة ؛ السلسلة العامة getId () {معرف الإرجاع ؛ } public void setId (string id) {this.id = id ؛ } السلسلة العامة getName () {return name ؛ } public void setName (اسم السلسلة) {this.name = name ؛ } السلسلة العامة getPwd () {return pwd ؛ } public void setPwd (String pwd) {this.pwd = pwd ؛ } السلسلة العامة getAcode () {return acode ؛ } public void setacode (string acode) {this.acode = acode ؛ } السلسلة العامة getActive () {return Active ؛ } public void setActive (سلسلة نشطة) {this.active = نشط ؛ } السلسلة العامة getEmail () {return email ؛ } public void setemail (string email) {this.email = email ؛ } Override public int hashcode () {Final int prime = 31 ؛ int النتيجة = 1 ؛ النتيجة = prime * result + ((id == null)؟ 0: id.HashCode ()) ؛ نتيجة العودة } Override Public Boolean يساوي (كائن OBJ) {if (this == obj) إرجاع true ؛ إذا (OBJ == NULL) عودة خطأ ؛ if (getClass ()! = obj.getClass ()) return false ؛ المستخدم الآخر = (المستخدم) OBJ ؛ if (id == null) {if (other.id! = null) return false ؛ } آخر إذا (! id.equals (other.id)) إرجاع خطأ ؛ العودة صحيح. }}C3P0POOL.JAVA
حزمة cn.hncu.pubs ؛ استيراد java.sql.connection ؛ استيراد java.sql.sqlexception ؛ استيراد javax.sql.dataSource ؛ import com.mchange.v2.c3p0.combopooleddataSource ؛ public c3p0pool {private static desource ds = new combopooleddataSource ؛ private static threadlocal <connection> tl = new threadlocal <connection> () ؛ الاتصال الثابت العام getCon () يلقي sqlexception {connection con = (connection) tl.get () ؛ if (con == null) {con = ds.getConnection () ؛ tl.set (con) ؛ } إرجاع الخداع ؛ } public static dataSource getPool () {return ds ؛ } public static threadlocal <Connection> getTl () {return tl ؛ }}C3P0-Config.xml
<c3p0-config> <!-التكوين الافتراضي ، إن لم يكن محددًا ، استخدم هذا التكوين-> <default-config> <property name = "driverclass" <! الحد الأقصى لوقت الخمول-> <property name = "maxidletime"> 30 </propect name = "maxStatements"> 50 </property> </default-config> <!-المسماة التكوين-> <name-config name = "hncu"> <property name = "driverClass name = "jdbcurl"> jdbc: mysql: //127.0.0.1: 3306/sstud </property> <property name = "user"> الجذر </propert name = "initialPoolSize"> 100 </sorterperation> <property name = "minpoolsize"> 50 </sopport> <property name = "maxpoolsize"> 1000 </property> <property name = "maxStatements"> 0 </propert </name-config> </c3p0-config>
Regdao.java
package cn.hncu.reg.dao ؛ import cn.hncu.reg.domain.user ؛ public interface regdao {public user reg (user user) ؛ المستخدم العام النشط (سلسلة acode) ؛}Regdaojdbc.java
package cn.hncu.reg.dao ؛ استيراد java.sql.sqlexception ؛ استيراد java.util.uuid ؛ استيراد javax.sql.datasource ؛ استيراد org.apache.commons.dbutils.queryrunner ؛ استيراد org.acmons.commons.dbutils.handlers.handler ؛ org.apache.commons.dbutils.handlers.beanlisthandler ؛ استيراد cn.hncu.c3p0pool ؛ استيراد cn.hncu.reg.domain.user ؛ الطبقة العامة regdaojdbc تنفذ resdao {override user reg (مستخدم المستخدم) QueryRunner QR = new QueryRunner (DS) ؛ String sql = "insert in user (id ، name ، pwd ، email ، active ، acode) القيم (؟ ،؟ ،؟ ،؟ ،؟)" ؛ حاول {string id = uuid.randomuuid (). toString (). replaceall ("-" ، "") ؛ string acode = uuid.randomuuid (). toString (). replaceall ("-" ، "") ؛ qr.update (sql ، id ، user.getName () ، user.getpwd () ، user.getemail () ، "0" ، acode) ؛ user.setacode (acode) ؛ user.setId (id) ؛ user.setactive ("0") ؛ } catch (sqlexception e) {// e.printstacktrace () ؛ System.out.println ("فشل التسجيل") ؛ العودة لاغية. } إرجاع المستخدم ؛ } Override Public User Active (string acode) {datasource ds = c3p0pool.getPool () ؛ QueryRunner QR = new QueryRunner (DS) ؛ String SQL = "SELECT * from user where acode =؟" ؛ مستخدم المستخدم = فارغ ؛ حاول {user = qr.query (SQL ، New BeanHandler (user.class) ، acode) ؛ if (user! = null) {sql = "update user set active = '1' ، acode = '' where acode =؟" ؛ qr.update (SQL ، acode) ؛ إرجاع المستخدم ؛ }} catch (sqlexception e) {user = null ؛ E.PrintStackTrace () ؛ } إرجاع فارغ ؛ }}Iregservice.java
حزمة cn.hncu.reg.service ؛ استيراد cn.hncu.reg.domain.user ؛ الواجهة العامة iRegService {public user reg (مستخدم المستخدم) ؛ المستخدم العام النشط (سلسلة acode) ؛}regservice.java
package cn.hncu.reg.service ؛ import cn.hncu.reg.dao.regdao ؛ import cn.hncu.reg.dao.regdaojdbc ؛ imports cn.hncu.reg.domain.user ؛ public regservice regservice {private regdao dao = new regdao. Override Public User REG (مستخدم المستخدم) {return dao.reg (user) ؛ } Override Public User Active (string acode) {return dao.active (acode) ؛ }}regservlet.java
package cn.hncu.reg.servlet ؛ استيراد java.io.ioException ؛ استيراد java.io.printwriter ؛ استيراد javax.servlet.servletexception ؛ استيراد javax.servlet.http.httpservlet ؛ استيراد javax.servlet.http.http.httplest ؛ javax.servlet.http.httpservletresponse ؛ استيراد cn.hncu.reg.domain.user ؛ استيراد cn.hncu.reg.sendmail.sendemailthread خدمة iRegService = new regservice () ؛ DOGED void public (طلب httpservletrequest ، استجابة httpservletresponse) يلقي servleTexception ، ioException {response.setContentType ("text/html") ؛ printWriter out = response.getWriter () ؛ out.println ("<! doctype html public/"-// w3c // dtd html 4.01 Transitional // en/">") ؛ out.println ("<html>") ؛ Out.println ("<head> <title> servlet </title> </head>") ؛ out.println ("<body>") ؛ out.println ("<body>") ؛ Out.println ("يرجى ملء كما هو مطلوب") ؛ Out.println ("</body>") ؛ out.println ("</html>") ؛ out.flush () ؛ out.close () ؛ } public void dopost (httpservletrequest request ، httpservletresponse) يلقي servletexception ، ioException {printWriter out = response.getWriter () ؛ اسم السلسلة = request.getParameter ("name") ؛ سلسلة pwd = request.getParameter ("pwd") ؛ سلسلة البريد الإلكتروني = request.getParameter ("البريد الإلكتروني") ؛ مستخدم المستخدم = مستخدم جديد () ؛ user.setName (name) ؛ user.setpwd (pwd) ؛ user.setemail (البريد الإلكتروني) ؛ user = service.reg (user) ؛ if (user! = null) {out.print ("سجل ناجحًا ، يرجى الانتقال إلى عنوان البريد الإلكتروني للتحقق") ؛ جديد sendEmailThread (user.getAcode ()). start () ؛ } آخر {out.print ("فشل التسجيل") ؛ }}}Sendemailthread.java
package cn.hncu.reg.sendmail ؛ استيراد java.util.properties ؛ استيراد javax.mail.authenticator ؛ import javax.mail.message.recipienttype ؛ import javax.mail.messagingexception ؛ import javax.masword. javax.mail.internet.addressException ؛ import javax.mail.internet.internetaddress ؛ import javax.internet.mimemessage ؛ import org.apache.log4j.logger ؛ public class sendemailthread يمتد مؤشر الترابط {private acode ؛ سجل المسجل الخاص = logger.getLogger (sendemailthread.class) ؛ sendemailthread العامة (سلسلة acode) {this.acode = acode ؛ } Override public void run () {properties p = new properties () ؛ P.SetProperty ("mail.host" ، "smtp.sina.com") ؛ P.SetProperty ("mail.smtp.auth" ، "true") ؛ جلسة الجلسة = session.getDefaultInstance (P ، Australiticator () {Override ، passwordauthentication getPasswordAuthentication () {passworeauthentication pa = new passworeauthentication ("hncujava" ، "1234567") ؛ return pa ؛}}) ؛ session.setDebug (true) ؛ mimemessage msg = new mimemessage (الجلسة) ؛ حاول {msg.setfrom (new InternetAddress ("[email protected]")) ؛ msg.setRecipient (recientType.to ، New InternetAddress ("[email protected]")) ؛ msg.setsubject ("تنشيط حساب HNCU") ؛ StringBuilder sb = new StringBuilder () ؛ sb.append ("يرجى تنشيط البريد الإلكتروني: <a href = 'http: //127.0.0.1: 8080/mailWeb/Activeservlet") ؛ sb.append ("؟؟ acode ="+acode+"'> انقر لتنشيط </a>") ؛ sb.append ("<br/> إذا لم يكن التنشيط ناجحًا ، فيرجى نسخ العنوان التالي إلى شريط عنوان المتصفح للتفعيل اليدوي:") ؛ sb.append ("http://www.hncu.cn/mailweb/activeservlet؟acode="+acode) ؛ msg.setContent (sb.toString () ، "text/html ؛ charset = utf-8") ؛ Transport.Send (MSG) ؛ log.info ("إرسال البريد بنجاح") ؛ } catch (addressException e) {log.error ("عنوان البريد الإلكتروني خاطئ ، فشل إرسال البريد الإلكتروني") ؛ E.PrintStackTrace () ؛ } catch (messagingException e) {E.PrintStackTrace () ؛ log.error ("تنسيق رسالة البريد الإلكتروني خاطئ ، فشل إرسال البريد الإلكتروني") ؛ }}}Activeservlet.java
package cn.hncu.reg.servlet ؛ استيراد java.io.ioException ؛ استيراد java.io.printwriter ؛ استيراد javax.servlet.servletexception ؛ استيراد javax.servlet.http.httpservlet ؛ استيراد javax.servlet.http.http.httplest ؛ javax.servlet.http.httpservletresponse ؛ import cn.hncu.reg.domain.user ؛ استيراد cn.hncu.reg.service.iregservice ؛ استيراد cn.hncu.reg.service.regservice ؛ public class sevelservlet يوسع httpservlet DOGED void public (طلب httpservletrequest ، استجابة httpservletresponse) يلقي servletexception ، ioException {printWriter out = response.getWriter () ؛ string acode = request.getParameter ("acode") ؛ مستخدم المستخدم = service.active (acode) ؛ request.setattribute ("user" ، user) ؛ System.out.println ("user:"+user) ؛ request.getRequestDispatcher ("/jsps/result.jsp"). إلى الأمام (طلب ، استجابة) ؛ }}index.jsp
<٪@ page language = "java" import = "java.util. Transitional // en "> <html> <head> <title> تسجيل الدخول عبر البريد الإلكتروني </title> <script type =" text/javaScript "> function reg () {document.forms [0] .Action = '<c: url value ="/jsps/reg.jsp "/>' ؛ document.forms [0] .Submit () ؛ } دالة تسجيل الدخول () {document.forms [0] .Action = '<c: url value = "/loginservlet"/>' ؛ document.forms [0] .Submit () ؛ } </script> </head> <body> <c: if test = "$ {! error error}"> فشل تسجيل الدخول <c: إزالة var = "error" scope = "session"/> </c: if> <c: if test = "method =" method = "method =" type = "text" name = "name" value = "wang"/> <br/> كلمة المرور: <إدخال type = "text" name = "pwd" value = "1234"/> <br/> <input type = "button" value = "login </c: if> <c: if test = "$ {! boo}"reg.jsp
<٪@ page language = "java" import = "java.util. Transitional // en "> <html> <head> <title> نظام تسجيل البريد الإلكتروني </title> <script type =" text/javaScript "> function reg () {document.forms [0]. document.forms [0] .Submit () ؛ } دالة تسجيل الدخول () {document.forms [0] .Action = '<c: url value = "/loginservlet"/>' ؛ document.forms [0] .Submit () ؛ } </script> </head> <body> <c: if test = "$ {{$ sessionscope.user}" var = "boo"> <h3> تسجيل المستخدم </h3> <form action = "" method = "post"> name: <input type = "text" name = "wang"/" value = "1234"/> <br/> البريد الإلكتروني: <input type = "text" name = "email" value = "[email protected]"/> <br/> <input type = "button" value = "register" onClick = "Reg () ؛"/> <br/>النتيجة
<٪@ page language = "java" import = "java.util. Transitional // en "> <html> <head> <script type =" text/javaScript "> var tm ؛ var time = 5 ؛ الوظيفة start () {div1.innerhtml = "سوف تقفز في"+time+"seconds" ؛ وقت--؛ if (time <= 1) {window.clearinterval (tm) ؛ window.location.href = "<c: url value = '/index.jsp'/>" ؛ }} onload = function () {tm = window.setInterval (start ، 1000) ؛ } ؛ </script> </head> <body> <c: if test = "$ {! requestscope.user}" var = "boo"> تهانينا على التسجيل الناجح! يرجى تسجيل الدخول <a href = '<c: url value = "/index.jsp"/>'> login </a> <br/> <br/> <div id = "div1"> </viv> </c: if> <c: if test = "$ {boo}"web.xml
<؟ XSI: schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web- <filter-name> charset </filter-name> <lipter-class> cn.hncu.filter.characterfilter </filter-class> <Ing-param> <param-name> charset </parm-name> <parm-value> utf-8 </param-value> </ith-param> <Url-pattern>/*</url-pattern> </filter-mapping> <servlet> <spection> هذا هو وصف مكون j2ee الخاص بي </description> <sirection-name> هذا هو اسم العرض الخاص بمكون J2EE </display-name> <vishlet-name> regservlet </servlet-name> </servlet> <servlet> <Description> هذا هو وصف مكون J2EE الخاص بي </description> <عرض العرض> هذا هو اسم العرض الخاص بمكون J2EE الخاص بي </display-name> <Servlet-name> ActiveServlet </servlet-name> <sterled-class> cn.hncu.reg.revlet.activeLd. المكون </description> <display-name> هذا هو اسم عرض مكون J2EE الخاص بي </display-name> <Servlet-Name> loginservlet </rectlet-name> <stervlet-class> cn.hncu.login.loginservlet </servlet-class> </servlet> <Url-pattern>/regservlet </url-pattern> </servlet-mapping> <servlet-mapping> <sterled-mapping> <Sradlet-Name> ActiveServlet </revlet-name> <Url-pattern>/activeservlet </url-pattern> <Url-pattern>/loginservlet </url-pattern> </servlet-mapping> <-list-file-lister> <lispile-file> index.jsp </iship-file> </swith-file-list> </bil-app>
بحاجة إلى حزمة جرة
C3P0-0.9.1.2.jar
العموم dbutils -1.4.jar
Java-mail-1.4.4.jar
MySQL-Connector-Java-5.1.34-Bin.Jar
MyConutil.jar
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.