이 프로젝트는 Javaweb과 이메일을 결합한 프로젝트입니다. 시뮬레이션 된 웹 사이트는 이메일 계정을 사용하기 전에 활성화해야합니다.
데이터베이스를 만듭니다
테이블 사용자 만들기 (ID Varchar (32) 기본 키, 이름 Varchar (30), Pwd Varchar (20), 이메일 Varchar (20), Active Char (1), Acode Varchar (32))
user.java 값 객체
패키지 cn.hncu.reg.domain; import javax.persistence.table; public class user {private String id; 개인 문자열 이름; 개인 문자열 pwd; 개인 문자열 아코드; 개인 문자열 활성; 개인 문자열 이메일; public String getId () {return id; } public void setId (String id) {this.id = id; } public String getName () {return name; } public void setName (문자열 이름) {this.name = 이름; } public String getPwd () {return pwd; } public void setpwd (문자열 pwd) {this.pwd = pwd; } public String getAcode () {return acode; } public void setacode (String acode) {this.acode = acode; } public String getActive () {return active; } public void setActive (String Active) {this.active = active; } public String getEmail () {반환 이메일; } public void seteMail (문자열 이메일) {this.email = 이메일; } @override public int hashcode () {Final int prime = 31; int result = 1; result = prime * result + ((id == null)? 0 : id.hashcode ()); 반환 결과; } @override public boolean equals (Object obj) {if (this == obj) return true; if (obj == null) false를 반환합니다. if (getClass ()! = obj.getClass ()) false를 반환합니다. 사용자 기타 = (사용자) obj; if (id == null) {if (other.id! = null) false를 반환합니다. } else if (! id.equals (기타 .id))가 false를 반환합니다. 진실을 반환하십시오. }}c3p0pool.java
package cn.hncu.pubs;import java.sql.Connection;import java.sql.SQLException;import javax.sql.DataSource;import com.mchange.v2.c3p0.ComboPooledDataSource;public class C3p0Pool { private static DataSource ds=new ComboPooledDataSource();; Private STATIC THREADLOCAL <conn public static connection getCon ()은 sqlexception {connection con = (Connection) tl.get (); if (con == null) {con = ds.getConnection (); tl.set (con); } return con; } public static dataSource getPool () {return ds; } public static strandlocal <connection> gettl () {return tl; }}C3P0-config.xml
<c3p0-config> <!-기본 구성, 기본 구성은 지정되지 않은 경우이 구성을 사용합니다 .-> <fefault-config> <property name = "driver class"> com.mysql.jdbc.driver </property> <property name = "jdbcurl"> <! 최대 유휴 시간-> <property name = "maxIdletime"> 30 </property> <!-최대 얼마나 많은 연결이 있는지-> <속성 이름 = "maxpoolsize"> 10 </property> <!-최소한 몇 가지 연결-> <속성 이름 = "minpoolsize"> 2 </property> <!-대부분의 배치 진술이 대부분의 경우-< "maxstatement"> </default-config> <!-이름 구성-> <name-config name = "hncu"> <property name = "driverclass"> com.mysql.jdbc.driver> <속성 이름 = "jdbcurl"> jdbc : mysql : //127.0.0.1 : 3306/sstud </sstud> 이름 = "user"> root </property> <속성 이름 = "비밀번호"> 1234 </property> <property name = "acquireIncrement"> 5 </property> <!-풀에 데이터 연결이 충분하지 않으면 한 번에 몇 번 자랄 수 있습니까?-> <속성 이름 = "initialpoolyize"> 100 </property name = "minpoolsize"> name = "maxpoolsize"> 1000 </property> <property name = "maxstatements"> 0 </property> <property name = "maxstatementsperconnection"> 5 </property> <!-그는 중요하지만 그중 하나만 있습니다-> </name-config> </c3p0-config>
regdao.java
패키지 cn.hncu.reg.dao; import cn.hncu.reg.domain.user; public interface regdao {public user reg (사용자 사용자); 공개 사용자 활성 (문자열 아코드);}regdaojdbc.java
패키지 CN.hncu.reg.dao; import java.sql.sqlexection; import java.util.uuid; import javax.sql.sql.sql.sql.sql.sql.sql.sql.sql.sql.sql.sql.sql.sql.sql.sql.sql.sql.sql.sql.sql.sql.sql.sql.sql.sql.sql.sql.datasource; import org.apache.commons.dbutils.queryrunner; import org.apache.commons.dbutils.handlers.beanhandler; org.apache.commons.dbutils.handlers.beanlisthandler; import cn.hncu.pool.c3p0pool; import cn.hncu.reg.domain.user; public class regdaojdbc implements regdao {@override public user reg (datasource ds) {c3p0.); QueryRunner QR = New QueryRunner (DS); 문자열 sql = "사용자에 삽입 (id, name, pwd, 이메일, active, acode) 값 (?,?,?,?,?)"; {string id = uuid.randomuuid (). tostring (). replaceall ( "-", ""); 문자열 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); 문자열 sql = "Acode =?"에서 사용자에서 선택 *; "; 사용자 user = null; try {user = qr.query (sql, new beanhandler (user.class), acode); if (user! = null) {sql = "사용자 세트 active = '1', acode = ''where acode =?"; qr.update (SQL, Acode); 리턴 사용자; }} catch (sqlexception e) {user = null; e.printstacktrace (); } return null; }}IREGSERVICE.java
패키지 cn.hncu.reg.service; import cn.hncu.reg.domain.user; public interface iRegservice {public user reg (사용자 사용자); 공개 사용자 활성 (문자열 아코드);}regservice.java
패키지 cn.hncu.reg.service; import cn.hncu.reg.dao.regdao; import cn.hncu.reg.dao.regdaojdbc; import cn.hncu.reg.domain.user; public class regservice rements iriregservice {private regdao dao = new regdaojdbc (); @override public user reg (user user) {return dao.reg (user); } @override public user active (String Acode) {return dao.active (acode); }}regservlet.java
패키지 cn.hncu.reg.servlet; import java.io.ioexception; import java.io.printwriter; import javax.servlet.servletexception; import javax.servlet.http.httpservlet; import javax.servlet.http.htttp.htttpletrequest; 가져 오기; javax.servlet.http.http.httervletresponse; import cn.hncu.reg.domain.user; import cn.hncu.reg.sendmail.sendemailthread; import cn.hncu.reg.service.iregservice; import cn.hncu.reg.service.regverice; IREGSERVICE SERVICE = New RegService (); public void doget (httpservletrequest request, httpservletresponse responsk) 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> a 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 요청, httpservletResponse 응답) servletexception, ioexception {printwriter out = response.getWriter (); 문자열 이름 = request.getParameter ( "name"); 문자열 pwd = request.getParameter ( "pwd"); 문자열 이메일 = request.getParameter ( "이메일"); 사용자 user = 새 사용자 (); user.setName (이름); user.setpwd (pwd); user.seteMail (이메일); user = service.reg (사용자); if (user! = null) {out.print ( "등록 성공, 확인하려면 이메일 주소로 이동"); 새로운 sendemailthread (user.getacode ()). start (); } else {out.print ( "레지스터 실패"); }}}sendemailthread.java
패키지 CN.hncu.reg.sendmail; import java.util.properties; import javax.mail.authenticator; import javax.message.recipienttype; import javax.mail.messingexception; import javax.mail.mail.passwordauthentication; import javax javax.mail.internet.addressexception; import javax.mail.internet.internetaddress; import javax.mail.internet.mimemessage; import org.apache.log4j.logger; public class sendemailthread는 스레드 {private String acode; 개인 로거 로그 = logger.getLogger (sendemailthread.class); public sendemailthread (String 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, new authenticator () {@override prossected passwordauthentication getpasswordauthentication () {passwordauthentication pa = new passwordauthentication ( "hncujava", "1234567"); return pa;}); 세션 .SetDeBug (true); mimemessage msg = 새로운 mimemessage (세션); try {msg.setfrom (new InternetAddress ( "[email protected]")); msg.setRecipient (RecepientType.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"); 운송 .send (MSG); log.info ( "성공적으로 메일 보내기"); } catch (주소 지출 e) {log.error ( "이메일 주소가 잘못되었고 이메일 보내지 실패"); e.printstacktrace (); } catch (MessagingException e) {e.printstacktrace (); log.error ( "이메일 메시지 형식이 잘못되었고 이메일 보내지 실패"); }}}ActiveServlet.java
패키지 cn.hncu.reg.servlet; import java.io.ioexception; import java.io.printwriter; import javax.servlet.servletexception; import javax.servlet.http.httpservlet; import javax.servlet.http.htttp.htttpletrequest; 가져 오기; javax.servlet.http.http.httpervletresponse; import cn.hncu.reg.domain.user; import cn.hncu.reg.service.iregservice; import cn.hncu.reg.service.regservice; public classevlet eltends httperver service {); public void doget (httpservletrequest request, httpservletresponse 응답) servletexception, ioexception {printwriter out = response.getwriter (); 문자열 acode = request.getParameter ( "Acode"); 사용자 user = service.Active (Acode); request.setAttribute ( "사용자", 사용자); System.out.println ( "사용자 :"+사용자); request.getRequestDispatcher ( "/jsps/result.jsp"). FORMPER (요청, 응답); }}index.jsp
<%@ page language = "java"import = "java.util.*"pageencoding = "utf-8"%> <%@ taglib uri = "http://java.sun.com/jsp/jstl/core"prefix = "c"%> <! arttype html public "-// w3c // 전환 // en "> <html> <head> <title> 이메일 로그인 </title> <script type ="text/javaScript "> 함수 reg () {document.forms [0] .Action = '<c : url value ="/jsps/reg.jsp "/>'; document.forms [0] .submit (); } function login () {docum document.forms [0] .submit (); } </script> </head> <body> <c : if test = "$ {! empty error}"> 로그인 실패 <c : var = "error"scope = "session"/</c : if> <c : if test = "$ {empty sessionscope.user}"var = "boo"> <h3> user registration = "" "tether =" ""tether = "" " type = "text"name = "name"value = "wang"/> <br/> 비밀번호 : <input type = "text"name = "pwd"value = "1234"/> <br/> <input type = "value ="login "onclick ="login (); "/> <br/> input type ="value = "regvel" </c : if> <c : if test = "$ {! boo}"> 다시 오신 것을 환영합니다. $ {sessionscope.user.name} </c : if> </body> </html>reg.jsp
<%@ page language = "java"import = "java.util.*"pageencoding = "utf-8"%> <%@ taglib uri = "http://java.sun.com/jsp/jstl/core"prefix = "c"%> <! arttype html public "-// w3c // 전환 // en "> <html> <head> <title> 이메일 등록 시스템 </title> <script type ="text/javaScript "> 함수 reg () {document.forms [0] .Action = '<c : url value ="/regservlet "/>'; document.forms [0] .submit (); } function login () {docum document.forms [0] .submit (); . value = "1234"/> <br/> 이메일 : <input type = "text"name = "email"value = "[email protected]"/> <br/> <input type = "button"value = "register"onclick = "reg ();"/> <br/> </body> </html> </html>result.jsp
<%@ page language = "java"import = "java.util.*"pageencoding = "utf-8"%> <%@ taglib uri = "http://java.sun.com/jsp/jstl/core"prefix = "c"%> <! arttype html public "-// w3c // 전환 // en "> <html> <head> <script type ="text/javaScript "> var tm; var time = 5; function 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 = "$ {! bell requestscope.user}"var = "boo"> 성공적인 등록에 축하합니다! 로그인 <a href = '<c : url value = "/index.jsp"/>'> 로그인 </a> <br/> <br/> <div id = "div1"> </div> </c : if> <c : if test = "$ {boo}"> 등록 실패, 재 활성화 </html> </html>web.xml
<? xml version = "1.0"encoding = "utf-8"?> <web-app version = "3.0"xmlns = "http://java.sun.com/xml/xml/ns/javaee"xmlns : xsi = "http://www.w3.org/2001/xmlschema-instance. xsi : schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_3_0.xsd"> </name> <filter-name> charset </filter-name> <filter-class> cn.hncu.filter.characterfilter </filter-class> <init-param> <param-name> charset </param-name> <param- value> UTF-8 </param-value> </init-param> <filter-name> <Url-pattern>/*</url-pattern> </filter-mapping> <servlet> <description> 이것은 내 j2ee 구성 요소에 대한 설명입니다. 이것은 내 J2EE 구성 요소의 디스플레이 이름입니다 </display-name> <servlet-name> regservlet </servlet-name> <servlets clest> cn.hncu.gervervle. </servlet> <servlet> <description> 이것은 내 j2ee 구성 요소에 대한 설명입니다. </description> <display-name> 이것은 내 j2ee 구성 요소의 디스플레이 이름입니다 </display-name> <servlet-name> activeServlet </servlet-class> cn.hncu.reg.servlet.actives-class> </servlet> <let> <let> 구성 요소 </description> <display-name> 이것은 내 j2ee 구성 요소의 디스플레이 이름 </display-name> <servlet-name> loginservlet </servlet-name> <servlet-class> cn.hncu.login.loginservlet </servlet> <servlet-mapping> <servlet-name> regservlet </servlet-name> <Url-pattern>/regservlet </url-pattern> </servlet-mapping> <servlet-mapping> <servlet-mapping> <servlet-name> activeservlet </servlet-name> <url-pattern>/actives-ratpletn> <servlet-mapping> <servlet-mapping> <servlet-name> loginservlet </servinlevlet> <Url-pattern>/loginservlet </url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file> index.jsp </welcome-file> </welcome-file-list> </web-app>
JAR 패키지가 필요합니다
C3P0-0.9.1.2.jar
Commons-dbutils-1.4.jar
Java-Mail-1.4.4.jar
MySQL-Connector-Java-5.1.34-bin.jar
myconutil.jar
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.