Este projeto é um projeto que combina Javaweb e e -mail. O site simulado deve ativar a conta de email antes que ele possa ser usado.
Crie um banco de dados
Criar Usuário da Tabela (ID Varchar (32) Chave primária, Nome Varchar (30), PWD Varchar (20), email Varchar (20), Char Active (1), ACODE VARCHO (32))
User.java Value Object
pacote cn.hncu.reg.Domain; importar javax.persistence.table; public class Usuário {private string ID; nome de string privado; String privada PWD; Private String Acode; String privada ativa; e -mail privado de string; public string getId () {return id; } public void setId (string id) {this.id = id; } public string getName () {return name; } public void setName (nome da string) {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 string fetactive () {return ativo; } public void setActive (string ativo) {this.active = Active; } public String getEmail () {retornar email; } public void setEmail (string email) {this.email = email; } @Override public int hashCode () {final int prime = 31; int resultado = 1; resultado = prime * resultado + ((id == null)? 0: id.hashcode ()); resultado de retorno; } @Override public boolean equals (object obj) {if (this == obj) retorna true; if (obj == null) retorna false; if (getClass ()! = obj.getclass ()) retornar false; Usuário outro = (usuário) obj; if (id == null) {if (other.id! = null) retorna false; } else if (! id.equals (outros.id)) retorna false; retornar true; }}C3p0pool.java
pacote cn.hncu.pubs; importar java.sql.connection; importar java.sql.sqLexception; importar javax.sql.dataSource; importar com.mChange.v2.c3p0.combopooleddatasource; classe pública c3p0pool {static dataSource ds; threadlocal estático privado <neconnect> tl = new Threadlocal <neconnect> (); Public Static Connection getCon () lança sqLexception {conexão con = (conexão) tl.get (); if (con == null) {con = ds.getConnection (); tl.set (con); } retornar con; } public static datasource getpool () {return ds; } public static threadlocal <neconned> gettl () {return tl; }}C3p0-config.xml
<C3P0-Config> <!-Configuração padrão, se não for especificada, use esta configuração-> <Fault-Config> <propriedade name = "driverclass"> com.mysql.jdbc.driver </property> <propriedade name = "jdbcurl"> <! [CDATA [JDBC: MySQL: //127.0.0.1: 3306/sStud? Useunicode = true & caracterencoding = utf-8]]> </propriedade> <names = "user"> root </propriedade> <name "name"> 1234 <//!-inicialize "> Pool the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the theren> names> Tempo máximo de marcha lenta-> <propriedade name = "maxidleTime"> 30 </propriedade> <!-Quantas conexões existem no máximo-> <propriedade name = "maxpoolsize"> 10 </propriedade> <!-pelo menos algumas conexões-> <Nome da propriedade = "MinPoolsize"> 2 </Time> <! name = "maxstatements"> 50 </propriedade> </default-config> <!-nomeado configuração-> <nomeado-config name = "hncu"> <propriedade name = "driver"> com.mysql.jdbc.driver </propriedade> <Propriedade name = "jdbcurl"> jdbc: mysql: //127.0.0.1: 3306/sstud </propriedade> <propriedade name = "user"> root </propriedade> <names name = "senha"> 1234 </propriedade> <names = "adquirir um cenário"> 5 </propriedade "> <! name = "InitialPoolsize"> 100 </propriedade> <propriedade name = "MinPoolsize"> 50 </propriedade> <propriedade name = "maxpoolsize"> 1000 </ouse> <propriedade name = "maxstatements"> 0 </property> <nome da propriedade = "maxstatementsPerConnection"> 5 </propriedade> <!- </nomeado-config> </c3p0-config>
Regdao.java
pacote cn.hncu.reg.dao; importar cn.hncu.reg.domain.user; interface pública regdao {public user reg (usuário do usuário); Usuário público ativo (string acode);}Regdaojdbc.java
pacote cn.hncu.reg.dao; importar java.sql.sqLexception; importar java.util.uuid; importar javax.sql.datasource; import org.apache.commons.dbutils. org.apache.commons.dbutils.handlers.beanlisthandler; importar cn.hncu.pool.c3p0pool; importar cn.hncu.reg.domain.USER; classe pública Regdaojdbc implementos regudao {@Override userride Reg (usuário do usuário) { Queryrunner qr = new Queryrunner (ds); String sql = "inserir no usuário (id, nome, pwd, email, ativo, acode) valores (? ,? ,? ,? ,? ,?)"; tente {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 ("Falha no registro"); retornar nulo; } retornar usuário; } @Override Public User Active (String acode) {DataSource DS = C3P0POOL.getpool (); Queryrunner qr = new Queryrunner (ds); String sql = "Selecione * do usuário onde acode =?"; Usuário do usuário = nulo; tente {user = Qr. if (user! = null) {sql = "update user define Active = '1', acode = '' onde acode =?"; qr.update (SQL, acode); devolver usuário; }} catch (sqLexception e) {user = null; E.PrintStackTrace (); } retornar nulo; }}IREGSERVICE.JAVA
pacote cn.hncu.reg.service; importar cn.hncu.reg.domain.user; interface pública IREGSERVICE {public User Reg (usuário do usuário); Usuário público ativo (string acode);}Regservice.java
pacote cn.hncu.reg.service; importar cn.hncu.reg.dao.regdao; importar cn.hncu.reg.dao.regdaojdbc; importar cn.hncu.reg.Domain.user; @Override Public User Reg (usuário do usuário) {return Dao.reg (usuário); } @Override Public User Active (String acode) {return Dao.Active (acode); }}Regservlet.java
pacote cn.hncu.reg.servlet; importar java.io.ioException; importar java.io.printwriter; importar javax.servlet.servletexception; importar javax.servlet.http.httpslet; import javax.ervlet.http.httletLest; javax.servlet.http.httpServletResponse; importar cn.hncu.reg.domain.user; importar cn.hncu.reg.sendmail.sendEmailthread; import cn.hncu.reg.service.irservice; Serviço IregService = new RegService (); public void Doget (solicitação httpServletRequest, httpServletResponse Response) lança servletexception, ioexception {Response.setContentType ("text/html"); PrintWriter out = Response.getWriter (); out.println ("<! doctype html public/"-// w3c // dtd html 4.01 transitório // en/">"); out.println ("<html>"); out.println ("<head> <title> um servlet </ititle> </ad Head>"); out.println ("<body>"); out.println ("<body>"); out.println ("Por favor, preencha conforme necessário"); out.println ("</body>"); out.println ("</html>"); out.flush (); out.Close (); } public void DoPost (solicitação httpServletRequest, httpServletResponse resposta) lança servletexception, ioexception {printWriter out = Response.getWriter (); Nome da string = request.getParameter ("nome"); String pwd = request.getParameter ("pwd"); String email = request.getParameter ("email"); Usuário do usuário = novo usuário (); user.setName (nome); user.setpwd (PWD); user.setemail (email); usuário = service.reg (usuário); if (usuário! = null) {out.print ("registre -se bem -sucedido, vá para o endereço de e -mail para verificar"); novo sendEmailthread (user.getAcode ()). start (); } else {out.print ("Register falhou"); }}}Sendemailthread.java
pacote cn.hncu.reg.sendMail; importar java.util.properties; importar javax.mail.authenticator; importar javax.mail.message.recipientType; importação javax.mail.messagingException; javax.mail.pitaaxentication; javax.mail.internet.addressException; importar javax.mail.internet.internetaddress; importar javax.mail.internet.mimemessage; importar org.apache.log4j.logger; classe pública sendEmailthread extensões {private string acode; logger privado log = logger.getLogger (sendemailthread.class); public sendEmailthread (string acode) {this.acode = acode; } @Override public void run () {Propriedades p = new Properties (); p.setProperty ("Mail.host", "smtp.sina.com"); p.setProperty ("Mail.smtp.auth", "true"); Sessão session = session.getDefaultInstance (p, new Authenticator () {@Override Protected passwordAthentication getPasswordAuthentication () {senha dauThentication pa = new PasswordAuthentication ("hncujava", "1234567"); retornar pa;}}); session.setDebug (true); MIMEMESSAGE msg = novo Mimemessage (sessão); tente {msg.setFrom (new InternetAddress ("[email protected]")); msg.setRecipient (receptorype.to, new InternetAddress ("[email protected]")); msg.SetSubject ("Active HNCU Conta"); Stringbuilder sb = new stringbuilder (); sb.append ("Ative o email: <a href = 'http: //127.0.0.1: 8080/MailWeb/ActiveServlet"); sb.append ("? acode ="+acode+"'> clique para ativar </a>"); sb.append ("<br/> Se a ativação não for bem -sucedida, copie o seguinte endereço para a barra de endereço do navegador para ativação 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 ("envio de correio com sucesso"); } catch (endereço (endereço e) {log.error ("endereço de email está errado, envio de e -mail falhou"); E.PrintStackTrace (); } catch (MessagingException e) {E.PrintStackTrace (); log.error ("formato de mensagem de email está errado, envio de e -mail falhou"); }}}ActiveServlet.java
pacote cn.hncu.reg.servlet; importar java.io.ioException; importar java.io.printwriter; importar javax.servlet.servletexception; importar javax.servlet.http.httpslet; import javax.ervlet.http.httletLest; javax.servlet.http.httpServletResponse; importar cn.hncu.reg.domain.user; importar cn.hncu.reg.service.iregservice; importar service) (triverv. Public void Doget (solicitação httpServletRequest, httpServletResponse Response) lança servletexception, ioexception {printWriter out = Response.getWriter (); String acode = request.getParameter ("acode"); Usuário do usuário = service.active (acode); request.setAttribute ("Usuário", usuário); System.out.println ("Usuário:"+usuário); request.getRequestDispatcher ("/jsps/resultado.jsp"). Forward (solicitação, resposta); }}index.jsp
<%@ página linguagem = "java" import = "java.util. Transitória // pt "> <html> <head> <title> e -mail login </ititle> <script type =" text/javascript "> function reg () {document.forms [0] .action = '<c: url value ="/jsps/reg.jsp "/>'; document.forms [0] .submit (); } função login () {document.forms [0] .action = '<c: url value = "/logInservlet"/>'; document.forms [0] .submit (); } </script> </ad Head> <body> <c: if test = "$ {! Erro vazio}"> falha no login <c: remover var = "error" scope = "session"/> </c: se> <c: se test = "$ {empty sessionscope.user}" var = "boo"> <H3> usuário type="text" name="name" value="wang"/><br/> Password:<input type="text" name="pwd" value="1234"/><br/> <input type="button" value="Login" onclick="login();"/><br/> <input type="button" value="Register" onclick="reg();"/><br/> </form> </c: se> <c: se test = "$ {!Reg.jsp
<%@ página linguagem = "java" import = "java.util. Transição // pt "> <html> <head> <title> Sistema de registro de email </ititle> <script type =" text/javascript "> function reg () {document.forms [0] .action = '<c: url value ="/regservlet "/>; document.forms [0] .submit (); } função login () {document.forms [0] .action = '<c: url value = "/logInservlet"/>'; document.forms [0] .submit (); } </script> </ad Head> <body> <c: if test = "$ {empty sessionscope.user}" var = "boo"> <h3> Registro do usuário </h3> <form action = "" method = "post"> name: <input type = "text" name = "value =" wang "/> <br"> <br "> <br"> value = "1234"/> <br/> E -mail: <input type = "text" name = "email" value = "[email protected]"/> <br/> <input type = "button" value = "registring" onclick = "reg ();"/> <br/> </form> </c: se> </body> </body> </body)resultado.jsp
<%@ página linguagem = "java" import = "java.util. Transição // pt "> <html> <head> <script type =" text/javascript "> var tm; var time = 5; function start () {div1.innerhtml = "irá pular em"+time+"segundos"; tempo--; if (horário <= 1) {window.clearInterval (tm); window.Location.href = "<C: URL Value = '/Index.jsp'/>"; }} onload = function () {tm = window.setInterval (start, 1000); }; </script> </ad Head> <body> <c: if test = "$ {! Empty requestscope.user}" var = "boo"> parabéns pelo registro bem -sucedido! Faça login <a href = '<c: url value = "/index.jsp"/>'> login </a> <br/> <br/> <div id = "div1"> </div> </c: se> <c: se test = "$ {boo}"> falhou, reagir </c: se> </corpora </body> "web.xml
<?xml version="1.0" encoding="UTF-8"?><web-app version="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"> <display-name></display-name> <filter> <filter-name> charset </filter-name> <filter-class> cn.hncu.filter.characterFilter </ftrids-class> <otit-param> <air-name> charset </param-name> <l Port-maptale> utf-8 </param-value> </init-Param> </filter> <filter--mapping> Charf-chart> <n-filter> <n-filter> <n-filter> <n-filter> <n-filter> chart-nam-name <name> chartf-chart> <nilter-Mappy> utf-8 </param-value> </init-Param> </filter> <filter-Mappi> <name> <name> Charf-Name <name> <name> <nampet> Charf-nam. <url-Pattern>/*</url-tattern> </filter-mapping> <ervlet> <cription> Esta é a descrição do meu componente j2ee </cription> <liber-name> este é o nome de exibição do meu componente j2eeg-class </sisplay-name> <Verlet-name> regservlet </servlet-name> <legScls> cn.hn.hn.hname.hrevlet. </servlet> <Verlet> <cription> Esta é a descrição do meu componente J2EE </cription> <lame-name> Este é o nome da exibição do meu componente j2ee </sisiber-name> <Verlet-name> ActiveServlet </servlet-name> <Verlet-class> cn.hncu.reglet.sertlet.activetlet <//class> Componente </cription> <libe-name> Este é o nome de exibição do meu componente j2ee </libe-name> <Servlet-name> logInservlet </servlet-name> <Servlet-class> cn.hncu.login.loginservlet </servlet-class> </servlet> <verlet-Mapping> <let-name> <url-pattern>/regservlet </url-tattern> </servlet-mapping> <Servlet-mapping> <Servlet-mapping> <Verlet-name> ActiveServlet </servlet-name> <url-Pattern>/ActiveServlet </url-Pattern> </Servlet--Mapping> <verlet> <lletname> LIGNIM <url-pattern>/LogInservlet </url-tattern> </servlet-mapping> <lumer-fil-list> <lmed-File> index.jsp </limk -file>
Precisa de pacote 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
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.