Este proyecto es un proyecto que combina Javaweb y correo electrónico. El sitio web simulado debe activar la cuenta de correo electrónico antes de que pueda usarse.
Crear una base de datos
Crear user de tabla (ID varchar (32) Clave principal, nombre Varchar (30), PWD Varchar (20), correo electrónico Varchar (20), Active Char (1), Acode Varchar (32)))
Objeto de valor user.java
paquete cn.hncu.reg.domain; import javax.persistence.table; User de clase pública {ID de cadena privada; nombre de cadena privada; cadena privada pwd; Cadena privada Acode; cadena privada activa; correo electrónico de cadena privada; public String getId () {return id; } public void setid (ID de cadena) {this.id = id; } public String getName () {nombre de retorno; } public void setName (nombre de cadena) {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 activo; } public void SetActive (String Active) {this.active = activo; } public String getEmail () {return email; } public void setEmail (correo electrónico de cadena) {this.email = correo electrónico; } @Override public int hashcode () {final int prime = 31; int resultado = 1; resultado = prime * resultado + ((id == nulo)? 0: id.hashcode ()); resultado de retorno; } @Override public boolean iguales (objeto obj) {if (this == obj) return true; if (obj == null) return false; if (getClass ()! = obj.getClass ()) return false; Usuario otro = (usuario) obj; if (id == null) {if (other.id! = null) return false; } else if (! id.equals (other.id)) return false; devolver verdadero; }}C3p0pool.java
paquete cn.hncu.pubs; import java.sql.connection; import java.sql.sqlexception; import javax.sql.dataSource; import com.mchang.v2.c3p0.combopooleddataSource; public c3p0poolpool {DataSource estatical estatical = new ComboPooledDATATATATACEURCE ();););););););););););););););); Private static threadlocal <nection> tl = new ThreadLocal <Enection> (); Public static Connection getCon () lanza 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 <nection> gettl () {return tl; }}C3p0-config.xml
<C3p0-config> <!-Configuración predeterminada, si no se especifica, use esta configuración-> <faursual-Config> <Property Name = "DriverClass"> com.mysql.jdbc.driver </property> <Property name = "jdbcurl">> < Tiempo de inactividad máximo-> <Property name = "maxidletime"> 30 </property> <!-cuántas conexiones hay como máximo-> <propiedad name = "maxpoolSize"> 10 </property> <!-al menos unas pocas conexiones-> <name de propiedad = "minpoolSize"> 2 </propiedad> <!-cuántos estados de lote se pueden ejecutar en la mayoría de cada tiempo-> <nombre de propiedad name " </default-config> <!-Configuración nombrada-> <named-config name = "HNCU"> <Property Name = "DriverClass"> com.mysql.jdbc.driver </property> <Property name = "jdbcurl"> jdbc: mysql: //127.0.0.1: 3306/sstud </propiedad> <propietaria n. <property name="password">1234</property> <property name="acquireIncrement">5</property><!-- How many times can I grow at a time if there is not enough data connection in the pool--> <property name="initialPoolSize">100</property> <property name="minPoolSize">50</property> <property name="maxPoolSize">1000</property> <property name = "MaxStatements"> 0 </Property> <Property Name = "MaxStatementsPonConnection"> 5 </property> <!-Es importante, pero solo hay uno de él-> </named-Config> </c3p0-config>
Regdao.java
paquete cn.hncu.reg.dao; import cn.hncu.reg.domain.user; interfaz pública regdao {public user reg (usuario de usuario); Public User Active (String Acode);}Regdaojdbc.java
paquete cn.hncu.reg.dao; import java.sql.sqlexception; import java.util.uuid; import javax.sql.dataSource; importar org.apache.commons.dbutils.queryrunner; import org.apache.commons.dbutils.handlers.beanhandler; import org.apache.commons.dbutils.handlers.beanlisthandler; import cn.hncu.pool.c3p0pool; import cn.hncu.reg.domain.user; clase pública regdaojdbc implementa regdao {@override usuarios públicos reg (usuario usuario) {dataSource ds = c3p0polpool.getpool.get.getpool.getpool. Queryrunner qr = nuevo QueryRunner (DS); String sql = "Insertar en el usuario (id, nombre, pwd, correo electrónico, activo, acode) valores (?,?,?,?,?,?)"; Pruebe {String id = uuid.randomuuid (). toString (). replaceAll ("-", ""); Cadena acode = uuid.randomuuid (). ToString (). Reemplazar ("-", ""); 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 ("registrar fallido"); regresar nulo; } Return User; } @Override Public User Active (String Acode) {DataSource ds = c3p0pool.getpool (); Queryrunner qr = nuevo QueryRunner (DS); Cadena sql = "Seleccionar * de usuario donde acode =?"; Usuario user = nulo; intente {user = qr.query (SQL, nuevo BeanHandler (user.class), acode); if (user! = null) {sql = "actualizar user set activo = '1', acode = '' donde acode =?"; Qr.Update (SQL, ACODE); devolver el usuario; }} Catch (Sqlexception e) {user = null; E.PrintStackTrace (); } return null; }}IREGService.java
paquete cn.hncu.reg.service; import cn.hncu.reg.domain.user; interfaz pública IREGService {Public User Reg (usuario de usuario); Public User Active (String Acode);}Regservice.java
paquete cn.hncu.reg.service; import cn.hncu.reg.dao.regdao; import cn.hncu.reg.dao.regdaojdbc; import cn.hncu.reg.domain.user; clase pública regservice implementos Iregservice {privado regdao = new regdaojdbc ();); @Override Public User Reg (usuario de usuario) {return dao.reg (usuario); } @Override Public User Active (String Acode) {return dao.active (acode); }}Regservlet.java
paquete 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.httpservletRequest; import; importar; import javax.servlet.http.httpServletResponse; import cn.hncu.reg.domain.user; import cn.hncu.reg.sendmail.sendemailthread; import cn.hncu.reg.service.iregservice; import cn.hncu.reg.service.regservice; IREGService Service = new RegService (); Public void doget (httpservletrequest solicitud, httpservletResponse respuesta) lanza ServletException, ioexception {respuesta.setContentType ("text/html"); PrintWriter out = Response.getWriter (); out.println ("<! DocType html public/"-// w3c // dtd html 4.01 transitional // en/">"); out.println ("<html>"); out.println ("<Ethead> <title> un servlet </title> </head>"); out.println ("<body>"); out.println ("<body>"); out.println ("Por favor complete según sea necesario"); out.println ("</body>"); out.println ("</html>"); out.flush (); out.close (); } public void dopost (httpservletRequest solicitud, respuesta httpservletResponse) lanza ServletException, ioexception {printWriter out = respuesta.getwriter (); Name de cadena = request.getParameter ("nombre"); Cadena pwd = request.getParameter ("pwd"); String Correo electrónico = request.getParameter ("correo electrónico"); Usuario user = nuevo usuario (); user.setName (nombre); user.setpwd (pwd); user.SetEmail (correo electrónico); usuario = servicio.reg (usuario); if (user! = null) {out.print ("Regístrese exitoso, vaya a la dirección de correo electrónico para verificar"); nuevo SendEmailThread (user.getAcode ()). Start (); } else {out.print ("registrar fallido"); }}}SendEmailthread.java
paquete cn.hncu.reg.sendmail; import java.util.properties; import javax.mail.authenticator; import javax.mail.message.recipientType; import javax.mail.messagingException; import javax.mail.passwastAuthentication; import javax.mail.session; importación de importación; importar; javax.mail.internet.addressException; import javax.mail.internet.internetaddress; import javax.mail.internet.mimemessage; import org.apache.log4j.logger; clase pública sendEmailThread extiende hilo {string private acode; privado logger log = logger.getLogger (sendEmailThread.class); public sendEmailThread (String Acode) {this.acode = acode; } @Override public void run () {Propiedades P = New Properties (); p.setProperty ("mail.host", "smtp.sina.com"); p.setProperty ("mail.smtp.auth", "true"); Sesión session = session.getDefaultInstance (P, new Authenticator () {@Override PassionAuthentation getPassWalDauthentication () {PasswordAuthentication pa = new PassingAuthentication ("HncujaVa", "1234567"); return PA;}}); session.setDebug (verdadero); Mimemessage msg = new Mimemessage (sesión); intente {msg.setFrom (nuevo Internetaddress ("[email protected]")); msg.setRecipient (destinationType.to, nuevo Internetaddress ("[email protected]")); msg.setsubject ("Activar la cuenta HNCU"); StringBuilder sb = new StringBuilder (); sb.append ("Active el correo electrónico: <a href = 'http: //127.0.0.1: 8080/mailweb/activletlet"); sb.append ("? acode ="+acode+"'> haga clic para activar </a>"); sb.append ("<br/> Si la activación no es exitosa, copie la siguiente dirección a la barra de direcciones del navegador para la activación manual:"); sb.append ("http://www.hncu.cn/mailweb/activeservlet?acode="+acode); msg.setContent (sb.ToString (), "text/html; charset = utf-8"); Transport.send (MSG); log.info ("envío de correo correctamente"); } catch (DirectionException e) {log.error ("La dirección de correo electrónico está incorrecta, el envío de correo electrónico fallido"); E.PrintStackTrace (); } catch (MessionGingException e) {E.PrintStackTrace (); log.error ("El formato de mensaje de correo electrónico es incorrecto, el envío de correo electrónico fallido"); }}}ActiveServlet.java
paquete 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.httpservletRequest; import; importar; import javax.servlet.http.httpServletResponse; import cn.hncu.reg.domain.user; import cn.hncu.reg.service.iregservice; import cn.hncu.reg.service.regservice; publicidad de clase pública servlet extiende httpservlet {servicio privado iregservice = new regservice (); public void doget (HTTPServletRequest Solicitud, respuesta httpservletResponse) lanza ServletException, ioException {printWriter out = respuesta.getwriter (); Cadena acode = request.getParameter ("acode"); Usuario user = servicio.active (acode); request.setAttribute ("Usuario", usuario); System.out.println ("Usuario:"+usuario); request.getRequestDIsPatcher ("/jsps/resultado.jsp"). Forward (solicitud, respuesta); }}index.jsp
<%@ page lenguaje = "java" import = "java.util.*" pageEncoding = "utf-8"%> <%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c"%> < Transitional // en "> <html> <head> <title> Correo electrónico Iniciar sesión </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 = "$ {! name = "name" value = "wang"/> <br/> contraseña: <input type = "text" name = "pwd" value = "1234"/> <br/> <input type = "button" Botton "value =" login "onClick =" login (); "/> <br/> <input type =" button "value =" registrar "en click =" reg (); "/> <br/> <<> </formul test = "$ {! Boo}"> Bienvenido, $ {sessionscope.user.name} </c: if> </body> </html>reg.jsp
<%@ page lenguaje = "java" import = "java.util.*" pageEncoding = "utf-8"%> <%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c"%> < Transitional // en "> <html> <fead> <title> Sistema de registro de correo electrónico </title> <script type =" text/javaScript> function reg () {document.forms [0] .Action = '<c: url valor = "/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 = "$ {sessionsCope.user}" var = "boo"> <h3> Registro de usuarios </h3> <form de formación = "" método = "post"> name: <input type = "text" name = "name" value = "wang"/> <br/> contraseña: <input type = "text" name = "pwd" value = "1234"/> <br/> correo electrónico: <input type = "text" name = "correo electrónico" value = "[email protected]"/> <br/> <input type = "button" value = "registrar" onClick = "reg ();"/> <br/> </form> </c: si> </buerte> </html>resultado.jsp
<%@ page lenguaje = "java" import = "java.util.*" pageEncoding = "utf-8"%> <%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c"%> < Transitional // en "> <html> <head> <script type =" text/javaScript "> var tm; tiempo var = 5; función start () {div1.innerhtml = "saltará en"+tiempo+"segundos"; tiempo--; if (tiempo <= 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 = "$ {! vacía requestscope.user}" var = "boo"> ¡Felicitaciones por el registro exitoso! Inicie sesión <a href = '<c: url value = "/index.jsp"/>'> Login </a> <br/> <br/> <div ID = "div1"> </div> </c: if> <c: if test = "$ {boo}"> fallado en el registro, por favor reactivado </c: if> </body> </html>web.xml
<? xml versión = "1.0" encoding = "utf-8"?> <web-app versión = "3.0" xmlns = "http://java.sun.com/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_0.xsd"> <javiswname> </DISPOST> </DISPOST-NAME> <filter-name> Charset </filter-name> <filter-class> cn.hncu.filter.characterFilter </filter-class> <it-param> <amamname> charset </param-name> <amam-value> utf-8 </param-value> </init-param> </filtro> <filter-mapping> <filter-name> charset> name> name> name> <Url-pattern>/*</sl-Pattern> </filter-mapping> <servlet> <Scuidtion> Esta es la descripción de mi componente J2EE </description> <lipsion-name> Este es el nombre de visual </servlet> <servlet> <description>This is the description of my J2EE component</description> <display-name>This is the display name of my J2EE component</display-name> <servlet-name>ActiveServlet</servlet-name> <servlet-class>cn.hncu.reg.servlet.ActiveServlet</servlet-class> </servlet> <servlet> <description>This is the description of my J2EE Componente </cription> <Spant-Name> Este es el nombre de visualización de mi componente J2EE </sipplave-name> <Servlet-name> loginservlet </servlet-name> <ervlet-class> cn.hncu.login.loginservlet </servlet-class> </servlet> <ervlet-mapping> <ervlet-name> regservlet </servlet-name>> <Url-Tattern>/regservlet </sl-pattern> </servlet-mapping> <ervlet-mapping> <ervlet-mapping> <ervlet-name> activeServlet </servlet-name> <Url-Tattern>/activeServlet </url-Pattern> </servlet-mapping> <ervlet-mapping> <ervlet-name> loginservlet </servlet-name> <Url-Tattern>/LoginServlet </sul-Pattern> </servlet-mapping> <Welcome-File-List> <Welcome-File> index.jsp </leadde-file> </bienvenido-file-list> </seb-app>
Necesito paquete de 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
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.