Ce projet est un projet qui combine Javaweb et e-mail. Le site Web simulé doit activer le compte de messagerie avant de pouvoir être utilisé.
Créer une base de données
Créer une table utilisateur (id varchar (32) Clé primaire, nom varchar (30), pwd varchar (20), e-mail varchar (20), active char (1), acode varchar (32))
User.java Value Object
package cn.hncu.reg.domain; import javax.persistence.Table; public class user {private String id; nom de chaîne privé; PWD de chaîne privée; chaîne privée Acode; chaîne privée active; e-mail de chaîne privée; public String getID () {return id; } public void setid (String id) {this.id = id; } public String getName () {Nom de retour; } 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 Aode) {this.acode = acode; } public String getActive () {return actif; } public void setactive (String Active) {this.active = active; } public String getEmail () {return e-mail; } public void setEmail (chaîne e-mail) {this.email = e-mail; } @Override public int hashcode () {final int prime = 31; Int résultat = 1; result = prime * result + ((id == null)? 0: id.hashcode ()); Résultat de retour; } @Override public boolean equals (objet obj) {if (this == obj) return true; if (obj == null) return false; if (getClass ()! = obj.getClass ()) return false; Utilisateur autre = (utilisateur) obj; if (id == null) {if (autre.id! = null) return false; } else if (! id.equals (autre.id)) renvoie false; Retour Vrai; }}C3p0pool.java
Package cn.hncu.pubs; import java.sql.connection; importer java.sql.sqlexception; import javax.sql.datasource; import com.mchange.v2.c3p0.combopooleddatasource public class c3p0pool {private static datasource ds = newgolbopooledDatasource (); TikeLocal statique privé <Connexion> TL = nouveau ThreadLocal <Connexion> (); Connexion statique publique getCon () lève sqlexception {connexion con = (connection) tl.get (); if (con == null) {con = ds.getConnection (); tl.set (con); } return con; } public static dataSource getpool () {return ds; } public static threadLocal <Connexion> getTl () {return tl; }}C3P0-Config.xml
<C3P0-Config> <! - Configuration par défaut, si elle n'est pas spécifiée, utilisez cette configuration -> <default-config> <propriété name = "DriverClass"> com.mysql.jdbc.driver </ propriété> <propriété name = "jdbcurl"> <! [Cdata [jdbc: mysql: //127.0.0.1: 3306 / sstud? Useunicode = true & caractotolcoding = utf-8]]> </ propriété> <propriété name = "user"> root </ propriété> <propriété name = "mot de passe"> 1234 </ propriété> <! - Initialiser la taille du pool -> < Temps d'inactivité maximum -> <propriété name = "maxidleTime"> 30 </ propriété> <! - Combien de connexions y a-t-il au plus -> <propriété name = "maxpoolSize"> 10 </ propriété> <! - Au moins quelques connexions -> <propriété name = "MinpoolSize"> 2 </ Property> <! - Combien de statuts de lots peuvent être exécutés à la plupart des temps -> </ Property> <! name = "maxstatements"> 50 </ propriété> </ default-config> <! - Configuration nommée -> <named-config name = "hncu"> <propriété name = "driverclass"> com.mysql.jdbc.driver </ propriété> <propriété name = "jdbcurl"> jdbc: mysql: //127.0.0.1: 3306 / sstud </ propriété> <propriété name = "user"> root </ propriété> <propriété name = "mot de passe"> 1234 </pomètre name = "initialPoolSize"> 100 </ propriété> <propriété name = "minpoolsize"> 50 </ propriété> <propriété name = "maxpoolsize"> 1000 </ propriété> <propriété name = "maxstatements"> 0 </ propriété> <propriété name = "MaxstatementsPerConnection"> 5 </ propriété> <! - Il est important, mais il n'y a que celui de lui -> </ nommé-config> </c3p0-config>
Regdao.java
package cn.hncu.reg.dao; Importer cn.hncu.reg.domain.user; interface publique regdao {public utilisateur reg (utilisateur utilisateur); Utilisateur public actif (chaîne Acode);}Regdaojdbc.java
package cn.hncu.reg.dao; import java.sql.sqlexception; import java.util.uuid; import javax.sql.datasource; import org.apache.commons.dbutils.queryrunner; import org.apache.commons.dbutils.handlers.beanhandler; import; org.apache.commons.dbutils.handlers.beanlisthandler; import Cn.hncu.pool.c3p0pool; Importer cn.hncu.reg.domain.user; classe publique RegDaojdbc implémente RegDao {@Override Public User Reg (utilisateur de l'utilisateur) {datasource ds = c3p0pool.Getpool (); QueryRunner qr = new queryrunner (ds); String sql = "Insérer dans l'utilisateur (id, nom, pwd, e-mail, actif, acode) valeurs (?,?,? ,? ,?)"; try {String id = uUid.randomuuid (). toString (). RempaceALL ("-", ""); String Acode = uUid.randomuuid (). ToString (). RempaceALL ("-", ""); 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 ("Échec du registre"); retourner null; } return utilisateur; } @Override public utilisateur actif (String Aode) {DataSource ds = c3p0pool.getpool (); QueryRunner qr = new queryrunner (ds); String sql = "SELECT * FROM User Where Acode =?"; Utilisateur utilisateur = null; essayez {user = qr.query (sql, new BeanHandler (user.class), Acode); if (user! = null) {sql = "Update User set active = '1', acode = '' où Acode =?"; Qr.Update (SQL, Acode); RETOUR UTILISATEUR; }} catch (sqlexception e) {user = null; e.printStackTrace (); } return null; }}Iregservice.java
package cn.hncu.reg.service; import Cn.hncu.reg.domain.user; interface publique iregService {public utilisateur Reg (utilisateur utilisateur); Utilisateur public actif (chaîne Acode);}RegService.java
package cn.hncu.reg.service; import Cn.hncu.reg.dao.regdao; import Cn.hncu.reg.dao.regdaojdbc; import Cn.hncu.reg.domain.user; Classe publique RegService implémente iregservice {private Regdao dao = newegaojdbc (); @Override public utilisateur Reg (utilisateur utilisateur) {return dao.reg (utilisateur); } @Override public utilisateur actif (String Aode) {return dao.active (Acode); }}RegServlet.java
Package cn.hncu.reg.servlet; Importer java.io.ioException; import java.io.printwriter; import javax.servlet.servletException; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletquest; Importer Javax.servlet.http. 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.Revervice gervice. IregService Service = new RegService (); public void doGet (demande httpservletRequest, réponse httpservletResponse) lève ServletException, ioException {réponse.setContentType ("text / html"); Printwriter out = réponse.getWriter (); out.println ("<! doctype html public /" - // w3c // dtd html 4.01 transitional // en / ">"); out.println ("<html>"); out.println ("<adread> <itle> un servlet </Title> </A-head>"); out.println ("<porce>"); out.println ("<porce>"); out.println ("Veuillez remplir au besoin"); out.println ("</body>"); out.println ("</html>"); out.flush (); out.close (); } public void doPost (demande httpsservletRequest, réponse httpservletResponse) lève ServletException, ioException {printwriter out = réponse.getWriter (); String name = request.getParameter ("name"); String pwd = request.getParameter ("pwd"); String Email = request.getParameter ("e-mail"); Utilisateur utilisateur = nouveau utilisateur (); user.setName (nom); user.setpwd (pwd); user.setEmail (e-mail); user = service.reg (utilisateur); if (user! = null) {out.print ("Enregistrez-vous, veuillez consulter l'adresse e-mail pour vérifier"); new SendEmailThread (user.getacode ()). start (); } else {out.print ("Registre a échoué"); }}}SendEmailThread.java
Package CN.hncu.reg.sendmail; import java.util.properties; import javax.mail.authenticator; import javax.mail.message.recipentType; import javax.mail.messagingException; import javax.mail.passwordAuthentication; import javax.mail.session; import javax.mail. javax.mail.internet.addressException; import javax.mail.internet.internetAddress; import javax.mail.internet.mimeMessage; import org.apache.log4j.logger; public class SendEmailTheread étend Thread {private String ocode; Logger privé Log = 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 session = session.getDefaultInstance (P, new Authenticator () {@Override Protected PasswordAuthentication GetPasswordAuthentication () {PasswordAuthentication pa = new PasswordAuthentication ("hncujava", "1234567"); retour pa;}}); session.setDebug (true); MimeMessage msg = new mimeMessage (session); essayez {msg.setFrom (new InternetAddress ("[email protected]")); msg.setReccipient (destinataireType.to, new InternetAddress ("[email protected]")); MSG.SETSUSBject ("Activer le compte HNCU"); StringBuilder sb = new StringBuilder (); SB.APPEND ("Veuillez activer l'e-mail: <a href = 'http: //127.0.0.1: 8080 / mailweb / activeservlet"); SB.APPEND ("? Acode =" + Acode + "'> Cliquez pour activer </a>"); SB.APPEND ("<br/> Si l'activation n'est pas réussie, veuillez copier l'adresse suivante dans la barre d'adresse du navigateur pour l'activation manuelle:"); sb.append ("http://www.hncu.cn/mailweb/activeservlet?acode=" + Acode); msg.setContent (sb.toString (), "text / html; charset = utf-8"); Transport.send (msg); Log.info ("Mail Envoi avec succès"); } catch (AddressException e) {Log.Error ("L'adresse e-mail est erronée, l'envoi d'e-mail a échoué"); e.printStackTrace (); } catch (MessageSingException e) {e.printStackTrace (); Log.Error ("Le format de messagerie électronique est faux, l'envoi d'e-mail a échoué"); }}}Activeservlet.java
Package cn.hncu.reg.servlet; Importer java.io.ioException; import java.io.printwriter; import javax.servlet.servletException; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletquest; Importer Javax.servlet.http. javax.servlet.http.httpservletResponse; import Cn.hncu.reg.domain.user; import Cn.hncu.reg.service.iregservice; Import Cn.hncu.reg.service.RegService; Public ClassVlet étend HttServlet {private IregService Service = New Regervice (); public void doGet (demande httpservletRequest, réponse httpservletResponse) lève ServletException, ioException {printwriter out = réponse.getWriter (); String Acode = request.getParameter ("Acode"); User user = service.active (Acode); request.setAttribute ("utilisateur", utilisateur); System.out.println ("utilisateur:" + utilisateur); request.getRequestDispatcher ("/ jsps / result.jsp"). Forward (demande, réponse); }}index.jsp
<% @ Page Language = "Java" Import = "Java.util. *" Pageencoding = "utf-8"%> <% @ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c"%> <! doctype html public "- // w3c // dtd htm.01 Transitional // en "> <html> <éad- head> <itle> Login e-mail </ title> <script type =" text / javascript "> function reg () {document.forms [0] .action = '<c: url value =" / jsps / reg.jsp "/>'; Document.Forms [0] .Submit (); } fonction login () {document.forms [0] .action = '<c: url value = "/ loginServlet" />'; Document.Forms [0] .Submit (); } </ script> </ head> <body> <c: if test = "$ {! Erreur vide}"> Échec de la connexion <C: supprimer var = "error" scope = "session" /> </c: if> <c: if test = "$ {vide sessionscope.user}" var = "Boo"> <h3> Type de type = " name = "name" value = "wang" /> <br/> mot de passe: <input type = "text" name = "pwd" value = "1234" /> <br/> <input type = "Button" value = "ligin" onclick = "ligin ();" /> <br/> <input type = "bouton" value = "Registre" OnClick = "Reg (); test = "$ {! boo}"> Bienvenue à nouveau, $ {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"%> <! doctype html public "- // w3c // dtd htm.01 Transitional // en "> <html> <éad- head> <ititle> Système d'enregistrement par e-mail </ title> <script type =" text / javascript "> function reg () {document.forms [0] .Action = '<c: url value =" / RegServlet "/>'; Document.Forms [0] .Submit (); } fonction login () {document.forms [0] .action = '<c: url value = "/ loginServlet" />'; Document.Forms [0] .Submit (); } </ script> </ head> <body> <c: if test = "$ {vide sessionscope.user}" var = "boo"> <h3> Enregistrement de l'utilisateur </h3> <form action = "" Method = "Post"> name: <entrée type = "text" name = "name" value = "wang" /> <br/> mot de passe: <entre type = "Text" Value = "1234" /> <br/> Courriel: <entrée type = "text" name = "e-mail" value = "[email protected]" /> <br/> <entrée type = "Button" value = "registre" onclick = "reg ();" /> <br/> </ form> </ / c: if> </ body> </ html>résultat.jsp
<% @ Page Language = "Java" Import = "Java.util. *" Pageencoding = "utf-8"%> <% @ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c"%> <! doctype html public "- // w3c // dtd htm.01 Transitional // en "> <html> <adread> <script type =" text / javascript "> var tm; Var Time = 5; fonction start () {div1.innerhtml = "va sauter dans" + time + "secondes"; temps--; if (time <= 1) {window.ClearInterval (tm); window.location.href = "<c: url value = '/ index.jsp' />"; }} onload = function () {tm = window.setinterval (start, 1000); }; </cript> </ head> <body> <c: if test = "$ {! vide requestscope.user}" var = "boo"> Félicitations pour l'inscription réussie! Veuillez vous connecter <a href = '<c: url value = "/ index.jsp" />'> Login </a> <br/> <br/> <div id = "div1"> </ div> </ c: if> <c: if test = "$ {boo}"> a échoué, veuillez réactiver </ / c: if> </ body> </ html>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-ristance" 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"> <plaw-name> <filter-name> charset </filter-name> <filter-class> cn.hncu.filter.characterfilter </filter-class> <Init-Param> </ param-name> Charset </onsam-name> <a param-valie> utf-8 </ param-value> </nit-param> </filter> <hild --mepping> <URL-Pattern> / * </ url-Pattern> </ Filter-Mapping> <Serplet> <DRescription> Ceci est la description de mon composant J2EE </, description> <spliplet-name> Ceci est le nom d'affichage de mon composant J2EE </ Display-Name> <Servlet-Name> RegServlet </ Servlet-Name> <Serplet-Class> CN.hncU.regreg.Servert.EFFLET. </vrlet> <Servlet> <Description> Ceci est la description de mon composant J2EE </ Description> <Display-Name> Ceci est le nom d'affichage de mon composant J2EE </ Display-Name> <Serplet-Name> ActiveServlet </ Servlet-Name> </Servlet-Class> CN.hncU.reg.serservlet.activeservlet </servlet-Class> Composant j2ee </ Description> <splay-name> Ceci est le nom d'affichage de mon composant J2EE </ display-name> <Servlet-Name> LoginServlet </ Servlet-name> <Servlet-Class> CN.hncu.login.logInservlet </ Servlet-Class> </ Servlet> <Servlet> <Servlet-Name> Regservlet </ Servlet> <servlet> <URL-Pattern> / RegServlet </ URL-Pattern> </ Servlet-Mapping> <Serplet-Mapping> <Serplet-Mapping> <Serplet-Name> ActiveServlet </ Servlet-Name> <Url-Pattern> / ActiveServlet </ Url-Pattern> </ ServLet-Mapping> <Serplet-Mapping> <Servlet-Name> LoginServlet </ ServLet-Name> <URL-PATTERN> / LoginServlet </url-Pattern> </ Servlet-Mapping> <Welcome-File-List> <Deen welcome-File> index.jsp </ Welcome-File> </ Welcome-File-List> </ Web-App>
Besoin du package 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
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.