English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
This project is a javaWeb and email integrated project, the website must be activated with the email account to use,
create database
create table user( id varchar(32) primary key, name varchar(30), pwd varchar(20), email varchar(20), active char(1), acode varchar(32) )
User.java值对象
package cn.hncu.reg.domain; import javax.persistence.Table; public class User { private String id; private String name; private String pwd; private String acode; private String active; private String email; 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()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; User other = (User) obj; if (id == null) { if (other.id != null) return false; } else if (!id.equals(other.id)) return false; return true; } }
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<Connection> tl=new ThreadLocal<Connection>(); 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() { devolver ds; } public static ThreadLocal<Connection> getTl() { devolver tl; } }
C3p0-config.xml
<c3p0-config> <!-- configuración por defecto, si no se especifica, se utiliza esta configuración --> <por defecto-config> <propiedad nombre="driverClass">com.mysql.jdbc.Driver</propiedad> <propiedad nombre="jdbcUrl"> <![CDATA[jdbc:mysql://127.0.0.1:3306/sstud?useUnicode=true&characterEncoding=UTF-8]]> </propiedad> <propiedad nombre="user">root</propiedad> <propiedad nombre="password">1234</propiedad> <!-- tamaño inicial del pool --> <propiedad nombre="initialPoolSize">2</propiedad> <!-- tiempo máximo de inactividad --> <propiedad nombre="maxIdleTime">30</propiedad> <!-- cuántas conexiones son las máximas --> <propiedad nombre="maxPoolSize">10</propiedad> <!-- cuántas conexiones son las mínimas --> <propiedad nombre="minPoolSize">2</propiedad> <!-- cuántos statements de lote se pueden ejecutar por vez --> <propiedad nombre="maxStatements">50</propiedad> </por defecto-config> <!-- configuración nombrada --> <nombrado-config nombre="hncu"> <propiedad nombre="driverClass">com.mysql.jdbc.Driver</propiedad> <propiedad nombre="jdbcUrl">jdbc:mysql://127.0.0.1:3306/sstud</propiedad> <propiedad nombre="user">root</propiedad> <propiedad nombre="password">1234</propiedad> <propiedad nombre="acquireIncrement">5</propiedad><!-- cuántas conexiones de datos en el pool se aumentan por vez cuando no haya suficientes --> <propiedad nombre="initialPoolSize">100</propiedad> <propiedad nombre="minPoolSize">50</propiedad> <propiedad nombre="maxPoolSize">1000</propiedad> <propiedad nombre="maxStatements">0</propiedad> <propiedad nombre="maxStatementsPerConnection">5</propiedad> <!-- es importante, pero solo hay uno de él --> </nombrado-config> </c3p0-config>
RegDAO.java
paquete cn.hncu.reg.dao; import cn.hncu.reg.domain.User; public interface RegDAO { public User reg(User user); public User active(String acode); }
RegDaoJdbc.java
paquete 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; import cn.hncu.reg.domain.User; public class RegDaoJdbc implements RegDAO{ @Override public User reg(User user) { DataSource ds=C3p0Pool.getPool(); QueryRunner qr=new QueryRunner(ds); String sql="insert into user(id,name,pwd,email,active,acode) values(?,?,?,?,?,?);"; try { 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("注册失败"); return null; } return user; } @Override public User active(String acode) { DataSource ds=C3p0Pool.getPool(); QueryRunner qr=new QueryRunner(ds); String sql="select * from user where acode=?"; User user=null; try { user=qr.query(sql, new BeanHandler(User.class), acode); if(user!=null){ sql="update user set active='1' ,acode=''where acode=?"; qr.update(sql, acode); return user; } catch (SQLException e) { user=null; e.printStackTrace(); } return null; } }
IRegService.java
paquete cn.hncu.reg.service; import cn.hncu.reg.domain.User; public interface IRegService { public User reg(User user); 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; public class RegService implements IRegService { 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
package 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 javax.servlet.http.HttpServletResponse; import cn.hncu.reg.domain.User; import cn.hncu.reg.enviarCorreo.SendEMailThread; import cn.hncu.reg.service.IRegService; import cn.hncu.reg.service.RegService; public class RegServlet extends HttpServlet { private IRegService service = new RegService(); public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { respuesta.setContentType("text/html"); PrintWriter out = response.getWriter(); salida.println("<!DOCTYPE HTML PUBLIC \",-//W3C//DTD HTML 4.01 Transicional//EN\">"); salida.println("<HTML>"); salida.println(" <CABECERA><TITULO>Un Servlet</TITULO></CABECERA>"); salida.println(" <CUERPO>"); salida.println("Por favor, complete según las instrucciones"); salida.println(" </CUERPO>"); salida.println("</HTML>"); salida.flush(); salida.close(); } public void doPost(HttpServletRequest solicitud, HttpServletResponse respuesta) throws ServletException, IOException { PrintWriter out = response.getWriter(); String nombre=request.getParameter("nombre"); String pwd = request.getParameter("pwd"); String email = request.getParameter("email"); User user = new User(); user.setName(name); user.setPwd(pwd); user.setEmail(email); user = service.reg(user); if (user != null) { out.print("注册成功,请到邮箱验证"); new SendEMailThread(user.getAcode()).start(); } else { out.print("注册失败"); } } }
SendEMailThread.java
package cn.hncu.reg.sendMail; import java.util.Properties; import javax.mail.Authenticator; import javax.mail.Message.RecipientType; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import org.apache.log4j.Logger; public class SendEMailThread extends Thread { private String acode; private Logger 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"); return pa; } }); session.setDebug(true); MimeMessage msg=new MimeMessage(session); try { msg.setFrom( new InternetAddress("[email protected]") ); msg.setRecipient(RecipientType.TO, new InternetAddress("[email protected]"); msg.setSubject("Activar la cuenta hncu"); StringBuilder sb=new StringBuilder(); sb.append("Por favor, active su correo electrónico:<a href='http:");//127.0.0.1:8080/mailWeb/ActiveServlet"); sb.append("?acode="+acode+" '>Haga clic para activar</a>"); sb.append("<br");/>Si la activación no ha sido exitosa, copie la siguiente dirección en la barra de direcciones del navegador para activarla manualmente:"); sb.append("http:");//www.hncu.cn/mailWeb/ActiveServlet?acode="+acode); msg.setContent(sb.toString(),"text/html;charset=utf-8"); Transport.send(msg); log.info("El envío de correo electrónico ha sido exitoso"); catch (AddressException e) { log.error("Dirección de correo electrónico incorrecta, envío de correo electrónico fallido"); e.printStackTrace(); } catch (MessagingException e) { e.printStackTrace(); log.error("Formato de correo electrónico incorrecto, envío de correo electrónico fallido"); } } }
ActiveServlet.java
package 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 javax.servlet.http.HttpServletResponse; import cn.hncu.reg.domain.User; import cn.hncu.reg.service.IRegService; import cn.hncu.reg.service.RegService; public class ActiveServlet extends HttpServlet { private IRegService service = new RegService(); public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); String acode = request.getParameter("acode"); User user = service.active(acode); request.setAttribute("user", user); System.out.println("user:\"+user); getRequestDispatcher("/jsps/forward(request, response); } }
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 HTML 4.01 Transicional//EN"> <html> <head> <title>Inicio de sesión de correo electrónico</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 }"> Fallo de inicio de sesión <c:remove var="error" scope="session"/> </c:if> <c:if test="${empty sessionScope.user }" var="boo"> <h3>Registro de usuario</h3> <form action="" method="post" > Nombre:<input type="text" name="name" value="wang"/><br/> Contraseña:<input type="text" name="pwd" value="1234"/><br/> <input type="button" value="Iniciar sesión" onclick="login();"/> <input type="button" value="Registrar" onclick="reg();"/><br/> </form> </c:if> <c:if test="${!boo }"> Bienvenido de vuelta,${ 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 HTML 4.01 Transicional//EN"> <html> <head> <title> Sistema de registro de correo electrónico</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>Registro de usuario</h3> <form action="" method="post" > Nombre:<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="email" value="[email protected]"/> <br/> <input type="button" value="Registrar" 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"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transicional//EN"> <html> <head> <script type="text/javascript"> var tm; var time=5; function start(){ div1.innerHTML="将在"+time+"秒跳转"; time--; if(time<=1{ window.clearInterval(tm); window.location.href="<c:url value='/index.jsp'/>"; } } tm=window.setInterval(start, 1000); ; </script> </head> <body> <c:if test="${!empty requestScope.user }" var=" boo"> 恭喜注册成功!请登录 <a href='<c:url value="/index.jsp" />'>登录</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 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/web-app_3_0.xsd"> <display-name></display-name> <filter> <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> <filter-mapping> <filter-name>charset</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <description>Esta es la descripción de mi J2EE component</description> <display-name>Este es el nombre de visualización de mi J2EE component</display-name> <servlet-name>RegServlet</servlet-name> <servlet-class>cn.hncu.reg.servlet.RegServlet</servlet-class> </servlet> <servlet> <description>Esta es la descripción de mi J2EE component</description> <display-name>Este es el nombre de visualización de mi J2EE component</display-name> <servlet-name>ActiveServlet</servlet-name> <servlet-class>cn.hncu.reg.servlet.ActiveServlet</servlet-class> </servlet> <servlet> <description>Esta es la descripción de mi J2EE component</description> <display-name>Este es el nombre de visualización de mi 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-name>ActiveServlet</servlet-name> <url-pattern>/ActiveServlet</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>LoginServlet</servlet-name> <url-pattern>/LoginServlet</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
Paquetes jar necesarios
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
Esto es todo el contenido de este artículo, espero que ayude a su aprendizaje y que todos los amigos apoyen el tutorial de gritos.
Declaración: El contenido de este artículo se ha obtenido de la red, pertenece al propietario original, se ha contribuido y subido por los usuarios de Internet por su propia iniciativa. Este sitio no posee los derechos de propiedad, no ha sido editado por humanos y no asume ninguna responsabilidad legal relacionada. Si encuentra contenido sospechoso de infracción de derechos de autor, por favor envíe un correo electrónico a: notice#oldtoolbag.com (al enviar un correo electrónico, reemplace # con @ para denunciar y proporcione evidencia. Si se verifica, este sitio eliminará inmediatamente el contenido sospechoso de infracción de derechos de autor.)