Этот проект является проектом, который объединяет Javaweb и электронную почту. Моделируемый веб -сайт должен активировать учетную запись электронной почты, прежде чем ее можно будет использовать.
Создайте базу данных
Создать пользователь таблицы (ID VARCHAR (32) Первичный ключ, имя VARCHAR (30), PWD VARCHAR (20), электронная почта VARCHAR (20), Active CHAR (1), ACODE VARCHAR (32))
User.java value объект
пакет cn.hncu.reg.domain; import javax.persistence.table; Пользователь открытого класса {Private String Id; Приватное название строки; частная строка PWD; Private String Acode; частная строка Active; Приватная строковая электронная почта; public String getId () {return id; } public void setId (String id) {this.id = id; } public String getName () {return name; } public void setName (string name) {this.name = name; } public String getPwd () {return pwd; } public void setPwd (String 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 () {return Email; } public void setEmail (string email) {this.email = 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) вернуть true; if (obj == null) вернуть false; if (getClass ()! = obj.getClass ()) вернуть false; Пользователь другой = (пользователь) obj; if (id == null) {if (ore.id! = null) вернуть false; } else if (! id.equals (ore.id)) вернуть false; вернуть истину; }}C3p0pool.java
Пакет cn.hncu.pubs; import java.sql.connection; импорт java.sql.sqlexception; импорт javax.sql.datasource; импорт com.mchange.v2.c3p0.combopooleddatasource; Private Static Threadlocal <nected> tl = new Threadlocal <nectation> (); Public Static Connection getCon () Throws 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 Threadlocal <nected> getTl () {return tl; }}C3p0-config.xml
<C3P0-CONFIG> <!-Конфигурация по умолчанию, если не указана, используйте эту конфигурацию-> <sault-config> <property name = "driverclass"> com.mysql.jdbc.driver </properation> <name = "jdbcurl"> <! [CDATA [JDBC: MySQL: //127.0.0.1: 3306/sstud? Использование Unicode = true & harementencoding = utf-8]]> </property> <name = "user"> root </property> <property name = "пароль"> 1234 </properation> <!-инициализируйте значение пула-> <именное свойство = "Parpoldsy1 </property> <!-! Максимальное время холостого хода-> <name = name = "maxidletime"> 30 </property> <!-Сколько соединений существует наиболее максимально-> <name = "maxpoolsize"> 10 </property> <!-По крайней мере, несколько соединений-> <Свойство = "minpoolsize"> 2 </property> <! name = "maxstatements"> 50 </property> </default-config> <!-название конфигурации-> <name-config name = "hncu"> <name = "driverclass"> com.mysql.jdbc.driver </property> <свойство name = "jdbcurl"> jdbc: mysql: //127.0.0.1: 3306/sstud </property> <name = "user"> root </property> <name = "password"> 1234 </property> <property name = "Приобретение"> 5 </Property> <! name = "initialPoolsize"> 100 </property> <name = "minpoolsize"> 50 </property> <name = "maxpoolsize"> 1000 </property> <name = "maxstatements"> 0 </property> <name = "maxstatementsperconnect </name-config> </c3p0-config>
Regdao.java
пакет cn.hncu.reg.dao; import cn.hncu.reg.domain.user; публичный интерфейс regdao {public user reg (пользователь пользователя); Общественный пользователь Active (String Acode);}Regdaojdbc.java
Пакет cn.hncu.reg.dao; import java.sql.sqlexception; import java.util.uuid; import javax.sql.datasource; импорт org.apache.commons.dbutils.queryrunner; import org.apache.commons.dbutils.handlers.beanhandler; org.apache.commons.dbutils.handlers.beanlisthandler; import cn.hncu.pool.c3p0pool; Импорт cn.hncu.reg.domain.user; открытый класс Regdaojdbc реализует regdao {@override public reger (пользователь пользователя) {dataSource ds = c3poool; QueryRunner QR = новый QueryRunner (DS); String sql = "Вставьте в пользовательский (идентификатор, имя, pwd, электронная почта, активная, acode) значения (?,?,?,?,?,?)"; try {string id = uuid.randomuuid (). String acode = uuid.randomuuid (). ToString (). Rayalll ("-", ""); 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 = новый QueryRunner (DS); String sql = "select * из пользователя, где acode =?"; Пользователь пользователь = null; try {user = qr.query (sql, new beanhandler (user.class), acode); if (user! = null) {sql = "Обновление пользователя set 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 (пользователь пользователя); Общественный пользователь Active (String Acode);}Regservice.java
Пакет cn.hncu.reg.service; импорт cn.hncu.reg.dao.regdao; импорт cn.hncu.reg.dao.regdaojdbc; импорт cn.hncu.reg.domain.user; общественный класс Regservice Sixplames Iregservice {Private Regda lebdaja grecda; @Override public user reg (пользователь пользователя) {return dao.reg (пользователь); } @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.httpservelt; import javax.servlet.htp.httpservlet; javax.servlet.http.httpservletresponse; import cn.hncu.reg.domain.user; import cn.hncu.reg.sendmail.sendemailthread; import cn.hncu.reg.service.iregservice; импорт cn.hncu.reg.gerserserviceserviser greendserviser; {Private Iregservice Service = new Regservice (); public void Doget (httpservletRequest, httpservletresponse response) Throws 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 response) throws servletexception, ioexception {printwriter out = response.getWriter (); String name = request.getParameter ("name"); String pwd = request.getParameter ("pwd"); String email = request.getParameter ("email"); Пользователь пользователь = новый пользователь (); user.setname (имя); user.setpwd (pwd); user.setemail (электронная почта); user = service.reg (user); if (user! = null) {out.print ("Зарегистрируйте успешно, перейдите на адрес электронной почты, чтобы проверить"); New SendEmailThread (user.getAcode ()). start (); } else {out.print ("Регистр не удался"); }}}SendEmailThread.java
Пакет cn.hncu.reg.sendmail; import java.util.properties; импорт javax.mail.authenticator; import javax.mail.message.recipienttype; импорт javax.mail.messagexexception; импорт javax.mail.passwordauthitication; импорт javax.mail.session; javax.mail.internet.addressexception; import javax.mail.internet.internetDress; import javax.mail.internet.miMessage; import org.apache.log4j.logger; public class sendemailThread extends extends xode; private logger log = logger.getlogger (sendemailthread.class); public sendemailThread (String acode) {this.Acode = acode; } @Override public void run () {свойства p = new Properties (); p.setproperty ("mail.host", "smtp.sina.com"); p.setproperty ("mail.smtp.auth", "true"); Session = session.getDefaultInstance (p, new Authenticator () {@Override защищенная пароля. session.setdebug (true); Mimemessage msg = new Mimemessage (Session); try {msg.setfrom (new InternetAddress ("[email protected]")); msg.setrecipient (receienttype.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
Пакет cn.hncu.reg.servlet; import java.io.ioexception; import java.io.printwriter; import javax.servlet.servletexception; import javax.servlet.http.httpservelt; import javax.servlet.htp.httpservlet; javax.servlet.http.httpservletresponse; import cn.hncu.reg.domain.user; импорт cn.hncu.reg.service.iregservice; импорт cn.hncu.reg.service.regservice; public activeservlet extends httpservelt {private regservice; newgservice; newgservice; newgservice; newgservice; newgservice; newgservice service = newgservice; newgservice; newgservice; newgservice regservice; public void Doget (httpservletrequest, httpservletresponse response) выбрасывает 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.*" pageencoding = "utf-8"%> <%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c"%> <! doctpe html public "// w3c // dtdml htm.01. Transitional // en "> <html> <Head> <Title> remail regin </title> <script type =" text/javascript "> function reg () {document.forms [0] .Action = '<c: url value ="/jsps/reg.jsp "/>'; document.forms [0] .submit (); } function login () {document.forms [0] .Action = '<c: url value = "/loginservlet"/>'; document.forms [0] .submit (); } </script> </head> <body> <c: if test = "$ {! Empty Error}"> Не удалось вход <C: remove var = "error" scope = "session"/> </c: if> <c: if test = "$ {wome sessionscope.user}" var = "boo"> <h3> infortation </h3> <form action = "method" = "var ="> <h3> inputation </h3> <form action = "var ="> <h3> <h3> </h3> <form action = "var ="> <h3> <h3> </h3 resignation </h3> <form action = "var ="> <h3> antight. type = "text" name = "name" value = "wang"/> <br/> пароль: <input type = "text" name = "pwd" value = "1234"/> <br/> <input type = "кнопка" value = "onclick =" login (); "/> <br/> <input type =" value = "onclick =" (); "/> <br/> <input type =" value = "onclick =" () "/> <br/> <input type =" value = "onclick =" () <br/> <br/> <input type = "value =" onclick = " </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"%> <! doctpe html public "// w3c // dtdml htm.01. Transitional // en "> <html> <Head> <Title> Система регистрации электронной почты </title> <script type =" text/javascript "> function reg () {document.forms [0] .Action = '<c: url value ="/regservlet "/>'; document.forms [0] .submit (); } function login () {document.forms [0] .Action = '<c: url value = "/loginservlet"/>'; document.forms [0] .submit (); } </script> </head> <body> <c:if test="${empty sessionScope.user }" var=" boo"> <h3>User Registration</h3> <form action="" method="post" > Name:<input type="text" name="name" value="wang"/><br/> Password:<input type="text" name="pwd" value = "1234"/> <br/> Электронная почта: <input type = "text" name = "email" value = "[email protected]"/> <br/> <input type = "value =" Register "OnClick =" reg (); "/> <br/> </form> </c: if> </body> </html>Result.jsp
<%@ page language = "java" import = "java.util.*" pageencoding = "utf-8"%> <%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c"%> <! doctpe html public "// w3c // dtdml htm.01. Transitional // en "> <html> <Head> <script type =" text/javascript "> var tm; var time = 5; function start () {div1.innerhtml = "будет прыгать"+time+"seconds"; время--; if (время <= 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 = "$ {! ement requestScope.user}" var = "boo"> Поздравляем с успешной регистрацией! Пожалуйста, войдите в систему <a href = '<c: url value = "/index.jsp"/>'> login </a> <br/> <br/> <div id = "div1"> </div> </c: if> <c: if test = "$ {BOO}"> Регистрация не удалась, пожалуйста, реактивировать </c: if> </body> </html>web.xml
<? xml version = "1.0" Encoding = "utf-8"?> <web-app arser = "3.0" xmlns = "http://java.sun.com/xml/ns/javaee" xmlns: xsi = "http://www.w3.org/2001/xmlschema electsmance "/www.w3. 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_0.xcsd"> </javaee/Web-App_3_0.x.xunmal> </javaee/web-app_3_0. <filter-name> charset </filter-name> <filter-class> cn.hncu.filter.characterfilter </filter-class> <init-param> <mame-name> charset </param-name> <-param-value> utf-8 </param-value> </init-param> </filter> <filter-name-name-name-name-name-name> </filter> <filter> </filter-name-name-namese> <Url-pattern>/*</url-pattern> </filter-mapping> <servlet> <districe> Это описание моего компонента J2EE </description> <Sipple-name> Это отображаемое имя моего J2EE Component </display-name> <servlet-name> regservlet </servlet-name> </servlet-class> cn.greervle.servlet. </servlet> <servlet> <socription> Это описание моего компонента j2ee </description> <sillan-name> Это отображаемое имя моего компонента J2 J2EE component</description> <display-name>This is the display name of my J2EE component</display-name> <servlet-name>LoginServlet</servlet-name> <servlet-class>cn.hncu.login.LoginServlet</servlet-class> </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>/activeServlet </url-pattern> </servlet-mapping> <serblet> <servlet-name> <Url-pattern>/loginservlet </url-pattern> </servlet-mapping> <selcopport-file-list> <selcopport-file> index.jsp </wervelode-file> </werving-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 больше.