English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Dieses Projekt ist ein JavaWeb- und E-Mail-Projekt, um die Website zu simulieren, die E-Mail-Konto muss aktiviert werden, um verwendet zu werden,
Datenbank erstellen
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() { return ds; } public static ThreadLocal<Connection> getTl() { return tl; } }
C3p0-config.xml
<c3p0-config> !-- Standardkonfiguration, wird diese Konfiguration verwendet, wenn keine angegeben wurde --> <default-config> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl"> <![CDATA[jdbc:mysql://127.0.0.1:3306/sstud?useUnicode=true&characterEncoding=UTF-8]]> </property> <property name="user">root</property> <property name="password">1234</property> !-- Initialgröße des Pools --> <property name="initialPoolSize">2</property> !-- Maximale Leerlaufzeit --> <property name="maxIdleTime">30</property> !-- Maximal wie viele Verbindungen --> <property name="maxPoolSize">10</property> !-- Wenigstens wie viele Verbindungen --> <property name="minPoolSize">2</property> !-- Wie viele Batch-Abfragen können pro Mal ausgeführt werden --> <property name="maxStatements">50</property> </default-config> !-- benannte Konfiguration --> <named-config name="hncu"> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/sstud</property> <property name="user">root</property> <property name="password">1234</property> <property name="acquireIncrement">5</property><!-- Wenn nicht genügend Datenverbindungen im Pool vorhanden sind, um wie viele zu erhöhen --> <property name="initialPoolSize">100</property> <property name="minPoolSize">50</property> <property name="maxPoolSize">1000</property> <property name="maxStatements">0</property> <property name="maxStatementsPerConnection">5</property> <!-- er ist wichtig, aber es gibt nur einen von ihm --> </named-config> </c3p0-config>
RegDAO.java
package 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
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; 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
package 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
package 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.sendMail.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 { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Übergangsmodus//EN\">"); out.println("<HTML>"); out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>"); out.println(" <BODY>"); out.println("请按要求填写"); out.println(" </BODY>"); out.println("</HTML>"); out.flush(); out.close(); } public void doPost(HttpServletRequest request, 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 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("Aktivierung des hncu-Kontos"); StringBuilder sb=new StringBuilder(); sb.append("Bitte aktivieren Sie Ihre E-Mail:<a href='http:");//127.0.0.1:8080/mailWeb/ActiveServlet"); sb.append("?acode="+acode+" '>Aktivieren</a>"); sb.append("<br");/>Wenn die Aktivierung nicht erfolgreich war, kopieren Sie die folgende Adresse in die Adressleiste des Browsers, um manuell zu aktivieren:"); sb.append("http:");//www.hncu.cn/mailWeb/ActiveServlet&63;acode="+acode); msg.setContent(sb.toString(), "text/html", "UTF-8");/html;charset=utf-8-8"); Transport.send(msg); log.info("E-Mail wurde erfolgreich gesendet"); catch (AddressException e) { log.error("Falsche E-Mail-Adresse, das Senden der E-Mail ist fehlgeschlagen"); e.printStackTrace(); } catch (MessagingException e) { e.printStackTrace(); log.error("E-Mail-Information ist falsch formatiert, das Senden der E-Mail ist fehlgeschlagen"); } } }
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); /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"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Übergangsmodus//EN"> <html> <head> <title>E-Mail-Anmeldung</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 }"> Anmeldung fehlgeschlagen <c:remove var="error" scope="session"/> </c:if> <c:if test="${empty sessionScope.user }" var="boo"> <h3>Benutzerregistrierung</h3> <form action="" method="post" > Name:<input type="text" name="name" value="wang"/><br/> Passwort:<input type="text" name="pwd" value="1234"/><br/> <input type="button" value="Anmeldung" onclick="login();"/> <input type="button" value="Registrierung" onclick="reg();"/><br/> </form> </c:if> <c:if test="${!boo }"> Willkommen zurück,${ 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 Übergangsmodus//EN"> <html> <head> <title>E-Mail-Registrierungssystem</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>Benutzerregistrierung</h3> <form action="" method="post" > Name:<input type="text" name="name" value="wang"/><br/> Passwort:<input type="text" name="pwd" value="1234"/><br/> E-Mail:<input type="text" name="email" value="[email protected]"/> <br/> <input type="button" value="Registrierung" 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 Übergangsmodus//EN"> <html> <head> <script type="text/javascript"> var tm; var time=5; function start(){ div1.innerHTML="Will jump in"+time+"seconds to jump"; time--; if(time<=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="${!empty requestScope.user }" var=" boo"> Congratulations on successful registration! Please log in <a href='<c:url value="/index.jsp" />'>Login</a><br/><br/> <div id ="div1"> </div> </c:if> <c:if test="${boo}"> Registration failed, please reactivate </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>This is the description of my J2EE component</description> <display-name>This is the display name of my J2EE component</display-name> <servlet-name>RegServlet</servlet-name> <servlet-class>cn.hncu.reg.servlet.RegServlet</servlet-class> </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 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-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>
需要的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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
声明:本文内容来自网络,版权归原作者所有。内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:notice#oldtoolbag.com(在发送邮件时,请将#替换为@进行举报,并提供相关证据。一经查实,本站将立即删除涉嫌侵权内容。)