このプロジェクトは、Javawebと電子メールを組み合わせたプロジェクトです。シミュレートされたWebサイトは、使用する前にメールアカウントをアクティブにする必要があります。
データベースを作成します
Tableユーザー(ID Varchar(32)Primary Key、Name Varchar(30)、Pwd Varchar(20)、電子メールVarchar(20)、Active Char(1)、Acode Varchar(32))
user.java値オブジェクト
パッケージcn.hncu.reg.domain; import javax.persistence.table; public class user {private string id;プライベート文字列名;プライベート文字列PWD;プライベート文字列acode;プライベート文字列アクティブ;プライベート文字列メール; 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());返品結果; } @Override public boolean equals(object obj){if(this == obj)return true; if(obj == null)falseを返します。 if(getClass()!= obj.getClass())falseを返します。ユーザーother =(user)obj; if(id == null){if(other.id!= null)falseを返します。 } else if(!id.equals(other.id))return false; trueを返します。 }}c3p0pool.java
パッケージcn.hncu.pubs;インポートjava.sql.connection; import java.sql.sqlexception; import javax.sql.datasource; import com.mchange.v2.c3p0.combopooleddatasource; public class c3p0ool {private static datasource ds(); private stathic 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); } con; } public static dataSource getpool(){return ds; } public static threadlocal <connection> gettl(){return tl; }}c3p0-config.xml
<c3p0-config> <! - デフォルトの構成、指定されていない場合、この構成を使用 - > <デフォルトconfig> <プロパティ名= "driverclass"> com.mysql.jdbc.driver </property name = "jdbcurl"> <![cdata [jdbc:mysql://127.0.0.1:3306/sstud?useunicode = true&charaterencoding = utf-8]]> </property name> <property name = "user"> root </property name> <property name = "password"> 1234 <最大アイドル時間 - > <プロパティ名= "maxidletime"> 30 </property> <! - 最大の接続の数 - > <プロパティ名= "maxpoolsize"> 10 </property> <! - 少なくともいくつかの接続 - > <プロパティ名= "minpoolsize"> 2 </property> < </default-config> <! - named configuration-> <named-config name = "hncu"> <プロパティ名= "driverclass"> com.mysql.jdbc.driver </property name = "jdbcurl"> jdbc:mysql://127.0.0.0.0.1:3306/SSTUD </sstud </</</< name = "password"> 1234 </property> <Property name = "acchireincrement"> 5 </property> <! - プールに十分なデータ接続がない場合、一度に何回成長できますか? name = "maxstatements"> 0 </property> <Property name = "maxstatementsperconnection"> 5 </property> <! - 彼は重要ですが、彼の1人だけがいます - > </named-config> </c3p0-config>
regdao.java
パッケージcn.hncu.reg.dao; Import cn.hncu.reg.domain.user; public interface regdao {public user reg(user user);パブリックユーザーアクティブ(StringAcode);}regdaojdbc.java
パッケージ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.handlers.bunhhindler org.apache.commons.dbutils.handlers.beanlisthandler; Import cn.hncu.pool.c3p0pool; Import cn.hncu.reg.domain.user; public class regdaojdbcはregdao {@Override publicユーザー){@Override publicユーザー) queryrunner qr = new queryrunner(ds); string sql = "inserting Into user(id、name、pwd、email、active、acode)values(?、?、?、?、?)"; try {string id = uuid.randomuuid()。toString()。facterall( " - "、 ""); string acode = uuid.randomuuid()。toString()。facterall( " - "、 ""); 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( "Register Failed"); nullを返します。 } return user; } @Override publicユーザーActive(string acode){dataSource ds = c3p0pool.getpool(); queryrunner qr = new queryrunner(ds); string sql = "select * from user where acode =?";ユーザーユーザー= null; try {user = qr.query(sql、new beanhandler(user.class)、acode); if(user!= null){sql = "ユーザーセットActive = '1'、acode = '' code =?"; qr.update(sql、acode);ユーザーを返します。 }} catch(sqlexception e){user = null; e.printstacktrace(); } nullを返します。 }}iRegService.java
パッケージcn.hncu.reg.service; Import cn.hncu.reg.domain.user; public interface iregservice {public user reg(user user);パブリックユーザーアクティブ(StringAcode);}regservice.java
パッケージcn.hhncu.reg.service; Import cn.hncu.reg.dao.regdao; Import cn.hncu.reg.dao.regdaojdbc; Import cn.hncu.reg.domain.user; public class regservice Implesement Imprames 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
パッケージ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;インポートcn.hncu.reg.domain.user;インポートcn.hncu.reg.sendmail.sendemailthread; Import cn.hhncu.service.iregservice; import cn.hhncu.service.service.service.service.service.service.service.service.service. iRegService service = new RegService(); public void doget(httpservletrequest request、httpservletResponse応答)servletexception、ioexception {respons.setcontenttype( "text/html"); printwriter out = response.getWriter(); out.println( "<!doctype html public/" - // w3c // dtd html 4.01 transitional // en/">"); out.println( "<html>"); out.println( "<head> <title> aサーブレット</title> </head>"); out.println( "<body>"); out.println( "<body>"); out.println( "必要に応じて記入してください"); out.println( "</body>"); out.println( "</html>"); out.flush(); out.close(); } public void dopost(httpservletrequest request、httpservletResponse応答)servletexception、ioexception {printwriter out = respons.getwriter();文字列名= request.getParameter( "name");文字列pwd = request.getParameter( "pwd");文字列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( "Register Failed"); }}}sendemailthread.java
パッケージcn.hncu.reg.sendmail; Import java.util.properties; import javax.mail.authenticator; Import javax.mail.message.RecipientType; Import javax.mail.mail.mail.mawaxception; Import javax.mail.passwordauthisication; import javax.mail.mail.mail.mail.mail.sosion; javax.mail.internet.addressexception; Import javax.mail.internet.internetaddress; import javax.mail.internet.mimemessage; import org.apache.log4j.logger; public class sendemailthread extendsスレッド{private string acode;プライベートロガー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.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(ReciontientType.to、new InternetAddress( "[email protected]")); msg.setsubject( "activate hncuアカウント"); stringbuilder sb = new StringBuilder(); sb.append( "メールをアクティブにしてください:<a href = 'http://127.0.0.1:8080/mailweb/activeservlet"); sb.append( "?acode ="+acode+"'>クリックしてアクティブ化</a>"); sb.append( "<br/>アクティベーションが成功しない場合は、手動のアクティベーションのために次のアドレスをブラウザアドレスバーにコピーしてください:"); sb.append( "http://www.hncu.cn/mailweb/activeservlet? acode="+acode); msg.setcontent(sb.tostring()、 "text/html; charset = utf-8"); Transport.send(msg); log.info( "メール送信に正常に送信"); } catch(addressexception e){log.Error( "メールアドレスが間違っています、電子メールの送信が失敗しました"); e.printstacktrace(); } catch(messagingexception e){e.printstacktrace(); log.Error( "電子メールメッセージ形式が間違っています、電子メールの送信が失敗しました"); }}}ActiveServlet.java
パッケージ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;インポートcn.hncu.reg.domain.user; Import cn.hncu.reg.service.iregservice; Import cn.hncu.reg.service.regservice; public class activeservelet extends httpservlet {prive regservice(); public void doget(httpservletrequest request、httpservletResponse応答)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); request.getRequestDispatcher( "/jsps/result.jsp")。 }}index.jsp
<%@ page Language = "Java" Import = "Java.util。*" pageEncoding = "utf-8"%> <%@ taglib uri = "http://java.sun.com/jsp/jstl/core"プレフィックス= "C"%> < Transitional // en "> <html> <head> <title> email login </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}"> login failed <c:var = "error" scope = "session"/> </c:if> <c:if> <c: "$ {empty sessionscope.user}" var = "boo"> <h3>ユーザー登録< type = "text" name = "name" value = "wang"/> <br/>パスワード:<入力タイプ= "text" name "name =" pwd "value =" 1234 "/> <br/> <入力タイプ="ボタン "value =" login "onclick =" login(); "/> <br/> <入力タイプ="ボタン</c:if> <c:test = "$ {!boo}"> welcome back、$ {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"プレフィックス= "C"%> < Transitional // en "> <html> <head> <title>メール登録システム</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:test = "$ {empty sessionscope.user}" var = "boo"> <h3>ユーザー登録</h3> <form action = "" post "> name:<入力タイプ="テキスト "name =" name "value =" wang "/>> <入力タイプ= < Value = "1234"/> <br/>電子メール:<入力タイプ= "テキスト" name = "email" value = "[email protected]"/> <br/> <入力タイプ= "ボタン" value = "登録" = "reg();"/> <br/> </f form> </c:> body> </html> </> </html> </c:result.jsp
<%@ page Language = "Java" Import = "Java.util。*" pageEncoding = "utf-8"%> <%@ taglib uri = "http://java.sun.com/jsp/jstl/core"プレフィックス= "C"%> < transitional // en "> <html> <head> <script type =" text/javascript "> var tm; var time = 5; function start(){div1.innerhtml = "は"+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:test = "$ {!empty requestscope.user}" var = "boo">登録の成功おめでとうございます!ログイン<a href = '<c:url value = "/index.jsp"/>'> login </a> <br/> <br/> <div1 = "div1"> </div> </c:if> <c:if> <c: "$ {boo}">登録が失敗しました。web.xml
<?xml version = "1.0" encoding = "utf-8"?> <web-appバージョン= "3.0" xmlns = "http://java.sun.com/xml/ns/javaee" xmlns:xsi = "http://www.w3.org/2001/xmlschema-instcance" xsi:schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/ns/javaee/web-app_0.xsd"> display-name> <filter-name> charset </filter-name> <filter-class> cn.hncu.filter.characterfilter </filter-class> <init-name> charset </param-name> <param-value> utf-8 </param-value> </init-param> </フィルター<url-pattern>/*</url-pattern> </filter-mapping> <servlet> <説明>これは私のj2eeコンポーネントの説明です</describe> <display-name>これは私のj2eeコンポーネントのディスプレイ名</display-name> <servlet-name> regservlet </servlet-name> <servlet> </servlet> <servlet> <description>これは私のj2eeコンポーネントの説明です</describe> <display-name>これは私のj2eeコンポーネントのディスプレイ名です</display-name> <servlet-name> activet-class> cn.hncu.reg.servlet.activeteコンポーネント</descripone> <display-name>これは私のj2eeコンポーネントのディスプレイ名</display-name> <servlet-name> loginservlet </servlet-name> <servlet-class> cn.hncu.login.loginservlet </servet-class> </servlet> <servlet-name> servletenam <url-pattern>/regservlet </url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name> activeServlet </servlet-name> <url-pattern>/activeservlet </url-pattern> </servlet-mapping> <servlet-name> loginervetlete <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
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。