Proyek ini adalah proyek yang menggabungkan Javaweb dan email. Situs web yang disimulasikan harus mengaktifkan akun email sebelum dapat digunakan.
Buat database
Buat tabel pengguna (id varchar (32) kunci utama, nama varchar (30), pwd varchar (20), email varchar (20), char aktif (1), varchar acode (32))
Objek nilai user.java
Paket cn.hncu.reg.domain; import javax.persistence.table; pengguna kelas publik {private string id; nama string pribadi; Private String PWD; Asode String Pribadi; Private String Active; email string pribadi; string publik getId () {return id; } public void setId (string id) {this.id = id; } public string getName () {return name; } public void setName (name 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 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; Hasil int = 1; hasil = hasil prime * + ((id == null)? 0: id.hashcode ()); hasil pengembalian; } @Override public boolean sama (objek obj) {if (this == obj) mengembalikan true; if (obj == null) mengembalikan false; if (getClass ()! = obj.getClass ()) mengembalikan false; Pengguna lain = (pengguna) obj; if (id == null) {if (Other.id! = null) return false; } else if (! id.equals (Other.id)) Return false; Kembali Benar; }}C3p0pool.java
Paket cn.hncu.pubs; import java.sql.connection; import java.sql.sqlexception; import javax.sql.dataSource; import com.mchange.v2.c3p0.comBoopoolDDataSource; public class c3p0pool {private static dATASOURCE STATATURECE = Kelas Publik C3P0POOL {private Static DATASOURCE STATIC STATIC STATICOURCE; Threadlocal statis pribadi <nection> tl = Threadlocal baru <nection> (); koneksi statis publik getCon () melempar sqlexception {koneksi con = (koneksi) tl.get (); if (con == null) {con = ds.getConnection (); tl.set (con); } return con; } public static DataSource getPool () {return ds; } public static ThreadLocal <Snection> getTl () {return tl; }}C3p0-config.xml
<c3p0-config> <!-konfigurasi default, jika tidak ditentukan, gunakan konfigurasi ini-> <default-config> <name properti = "driverclass"> com.mysql.jdbc.driver </property> <properti nama = "jdbcurl"> <! [CDATA [jdbc: mysql: //127.0.0.1: 3306/sstud? UseUnicode = true & characterencoding = UTF-8]]> </preate> <Properti Nama = "User"> Properti </Properti-Nama Properti = "Kata Sandi"> 1234 </properti> <!-inisialisasi </pool name = "Kata Sandi"> 1234 </properti> <! Waktu idle maksimum-> <name properti = "maxidletime"> 30 </propt> <!-berapa banyak koneksi yang paling banyak-> <name properti = "maxpoolsize"> 10 </prop Propert> <!-setidaknya beberapa koneksi-> <nama properti = "MINPOOLSIZE"> 2 </properti> <!-berapa banyak pernyataan Batch di "MINPOOLSIZE"> 2 </Properti> <!-Berapa banyak pernyataan Batch yang dapat dieksekusi di sebagian besar "> 2 </properti> <! </default-config> <!-named configuration-> <named-config name = "hncu"> <name properti = "driverclass"> com.mysql.jdbc.driver </property> <properti nama = "jdbcurl"> jdbc: mysql: //127.0.0.0.0.1: 3306/jdbc: mysql: //127.0.0.0.0.1: 3306 name="user">root</property> <property name="password">1234</property> <property name="acquireIncrement">5</property><!-- How many times can I grow at a time if there is not enough data connection in the pool--> <property name="initialPoolSize">100</property> <property name="minPoolSize">50</property> <property name = "maxPoolSize"> 1000 </pruptent> <properti name = "maxstatements"> 0 </pruptent> <properti name = "maxstatementsperconnection"> 5 </pruptent> <!-dia penting, tetapi hanya ada satu dari dia-> </named-config> </c3p0-config>
Regdao.java
Paket cn.hncu.reg.dao; import cn.hncu.reg.domain.user; antarmuka publik regdao {Public User Reg (pengguna pengguna); pengguna publik aktif (string acode);}Regdaojdbc.java
Paket cn.hncu.reg.dao; import java.sql.sqlexception; impor java.util.uuid; import javax.sql.datasource; impor org.apache.commons.dbutils.queryrunner; impor org.apache.apache.commons.dbutils.queryner; impor org.apache.apache.commons.dbutl.buthander. org.apache.commons.dbutils.handlers.beanlisthandler; import cn.hncu.pool.c3p0pool; import cn.hncu.reg.domain.user; kelas publik Regdaojdbc; DataSource. Queryrunner qr = queryrunner baru (DS); String sql = "masukkan ke dalam pengguna (id, nama, pwd, email, aktif, acode) nilai (?,?,?,?,?,?)"; coba {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 ("Daftar Gagal"); kembali nol; } mengembalikan pengguna; } @Override Public User Active (String Acode) {DataSource ds = c3p0pool.getPool (); Queryrunner qr = queryrunner baru (DS); String sql = "pilih * dari pengguna di mana acode =?"; Pengguna pengguna = null; coba {user = qr.query (sql, new beanHandler (user.class), acode); if (user! = null) {sql = "Perbarui pengguna set aktif = '1', acode = '' where acode =?"; qr.update (sql, acode); Pengguna Kembali; }} catch (sqlexception e) {user = null; e.printstacktrace (); } return null; }}Iregservice.java
Paket cn.hncu.reg.service; import cn.hncu.reg.domain.user; antarmuka publik iregservice {Reg pengguna publik (pengguna pengguna); pengguna publik aktif (string acode);}Regservice.java
Paket cn.hncu.reg.service; import cn.hncu.reg.dao.regdao; import cn.hncu.reg.dao.regdaojdbc; @Override Public User Reg (pengguna pengguna) {return dao.reg (pengguna); } @Override Public User Active (String Acode) {return dao.active (acode); }}Regservlet.java
Paket cn.hncu.reg.servlet; import java.io.ioException; impor java.io.printwriter; import javax.servlet.servletException; import javax.servlet.http.httpservlet; impor javax.servlet.http.httppserv; javax.servlet.http.httpservletresponse; impor cn.hncu.reg.domain.user; impor cn.hncu.reg.sendmail.sendemailThread; impor cn.hncu.reg.service.iregservice; impor cn.hncu.reg.service.service Layanan Iregservice = RegService baru (); public void doGet (permintaan httpservletRequest, respons httpservletResponse) melempar servletException, ioException {response.setContentType ("text/html"); Printwriter out = response.getWriter (); out.println ("<! Doctype html public/"-// w3c // dtd html 4.01 transisi // en/">"); out.println ("<Html>"); out.println ("<head> <title> a servlet </iteme> </head>"); out.println ("<body>"); out.println ("<body>"); out.println ("Harap isi sesuai kebutuhan"); out.println ("</body>"); out.println ("</html>"); out.flush (); out.close (); } public void dopost (permintaan httpservletRequest, respons httpservletResponse) melempar servletException, ioException {printwriter out = response.getWriter (); Name string = request.getParameter ("name"); String pwd = request.getParameter ("pwd"); String email = request.getParameter ("email"); Pengguna pengguna = pengguna baru (); user.setname (name); user.setpwd (PWD); user.setemail (email); user = service.reg (pengguna); if (user! = null) {out.print ("Daftar Sukses, silakan buka alamat email untuk memverifikasi"); sendeMailThread baru (user.getAcode ()). start (); } else {out.print ("Register Failure"); }}}SendeMailThread.java
Paket cn.hncu.reg.sendmail; impor java.util.properties; impor javax.mail.authenticator; impor javax.mail.message.recipienttype; impor javax.mail.messagingexception; impor javax.mail.passwordsword authentication; Impor JAVAX. javax.mail.internet.addressException; import javax.mail.internet.internetaddress; import javax.mail.internet.mimemessage; impor org.apache.log4j.logger; kelas publik sendeMailThread memperluas thread {private string acode; logger private 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 sesi = session.getDefaultInstance (p, authenticator baru () {@Override dilindungi passwordAuthentication getPasswordAuthentication () {passwordAuthentication pa = New PasswordAuthentication ("hncujava", "1234567"); return pa;}}); session.setDebug (true); Mimemessage msg = mimemessage baru (sesi); coba {msg.setfrom (internetAddress baru ("[email protected]")); msg.setrecipient (penerimaType.to, internetAddress baru ("[email protected]")); msg.setsubject ("Aktifkan akun HNCU"); StringBuilder SB = StringBuilder baru (); SB.Append ("Harap aktifkan email: <a href = 'http: //127.0.0.1: 8080/mailweb/activeservlet"); SB.Append ("? Acode ="+Acode+"'> Klik untuk mengaktifkan </a>"); SB.Append ("<br/> Jika aktivasi tidak berhasil, silakan salin alamat berikut ke bilah alamat browser untuk aktivasi manual:"); SB.Append ("http://www.hncu.cn/mailweb/activeservlet?acode="+acode); msg.setContent (sb.tostring (), "Teks/html; charset = utf-8"); Transport.Send (MSG); log.info ("Mail Sage berhasil"); } catch (AddressException e) {log.error ("Alamat email salah, pengiriman email gagal"); e.printstacktrace (); } catch (MessagingException e) {E.PrintStackTrace (); LOG.Error ("Format pesan email salah, pengiriman email gagal"); }}}ActiveServlet.java
Paket cn.hncu.reg.servlet; import java.io.ioException; impor java.io.printwriter; import javax.servlet.servletException; import javax.servlet.http.httpservlet; impor javax.servlet.http.httppserv; javax.servlet.http.httpservletResponse; impor cn.hncu.reg.domain.user; impor cn.hncu.reg.service.iregservice; impor cn.hncu.reg.service.regservice; crougervice public activeservlet memperluas httpservlet {newervice; public void doGet (permintaan httpservletRequest, respons httpservletResponse) melempar servletException, ioException {printwriter out = response.getWriter (); String acode = request.getParameter ("acode"); Pengguna pengguna = service.active (acode); request.setAttribute ("pengguna", pengguna); System.out.println ("Pengguna:"+Pengguna); request.getRequestDispatcher ("/jsps/result.jsp"). 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 Transisi // en "> <html> <head> <title> email login </itement> <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 = "$ {! ERROR}"> login gagal <c: hapus var = "error" scope = "session"/> </c: if> <c: if test = "$ {{{postput." h3. " type = "text" name = "name" value = "wang"/> <br/> password: <input type = "text" name = "pwd" value = "1234"/> <br/> <input type = "Tombol" value = "Login" OnClick = "Login ();" </c: if> <c: if test = "$ {! boo}"> selamat datang kembali, $ {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 Transisi // en "> <html> <head> <title> Sistem pendaftaran email </title> <script type =" text/javaScript "> fungsi 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 = "$ {hampa sesionscope.user}" var = "boo"> <h3> pendaftaran pengguna </h3> <bentuk action = "" Metode = "POST"> <input type = "name" name "name" NAME "=" wang " value = "1234"/> <br/> Email: <input type = "text" name = "email" value = "[email protected]"/> <br/> <input type = "tombol" value = "register" ontClick = "reg ();"/> <br/> </form> </c: if> </body> ht/ht/ht/ht/ht/htl>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 Transisi // en "> <html> <head> <script type =" text/javascript "> var tm; var waktu = 5; function start () {div1.innerHtml = "akan melompat di"+waktu+"detik"; waktu--; if (waktu <= 1) {window.clearInterval (tm); window.location.href = "<c: nilai url = '/index.jsp'/>"; }} onload = function () {tm = window.setInterval (start, 1000); }; </script> </head> <body> <c: if test = "$ {! emplement requestscope.user}" var = "boo"> Selamat atas pendaftaran yang berhasil! Harap masuk <a href = '<c: nilai url = "/index.jsp"/>'> login </a> <br/> <br/> <div id = "div1"> </div> </c: if> <c: if test = "$ {boo}"> Registrasi gagal, Harap reaktifkan </c: if> </if> {boo} "> gagal reaktifkan </c: if> </if> </{{boo {/ht/harap reaktivasi </c: if> </if>Web.xml
<? Xml Version = "1.0" encoding = "UTF-8"?> <Web-app Versi = "3.0" xmlns = "http://java.sun.com/xml/ns/javaee" xmlns: xsi = "http:/www.w3.org/org/2001 =" http:/www.w3.org/org/p21 XSI: schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee http:--nava> non-non-non-non-non-non <play-non/non-non-nol <play> <nilter-name> charset </tilter-name> <nyfil-class> cn.hncu.filter.characterfilter </tiler-class> <InT-param> <param-name> Charset </param-name> <param-value> UTF-8 </param-value> </init-param> </Filter> </filter> </petak-nilai> </init-name> </filter> </filter> </param-value> </init-param> </filter> <nilter-papping> <RURL-PATERS>/*</RURL-PATERS> </TERFERTER-MAPPING> <REVERLET> <CREESTRIPTION> Ini adalah deskripsi komponen J2EE saya </cripence> <lplay-name> Ini adalah nama tampilan dari komponen J2EE saya </display-name> <servlet-name> RegServlet </servlet-name> <servlet-class> cnn.hncu.hnncu.reget.reglet </servlet-name> <servlet-class> cnn.hncu.hncu.reg.reget.Reglet </servlet-name> <servlet-class> cnn.hncu.nhncu.reg. <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 Komponen </cripence> <play-name> Ini adalah nama tampilan komponen J2EE saya </splay-name> <servlet-name> LOGINSERVLET </servlet-name> <servlet-class> cn.hncu.login.loginServlet </servlet-class> </servlet> <servlet-mapping> </servlet-class> </servlet> <servlet-mapping> </servlet-class> </servlet> <servlet-mapping> </servlet-class <rerl-Pattern>/RegServlet </RURL-PATERS> </SERVLET-Mapping> <servlet-Mapping> <servlet-Mapping> <servlet-name> Activeservlet </servlet-name> <rerst-pola>/Activeservlet </rerserv> </Servlet-Mapping> <servlet-Mapping> <servlet-name> <RURL-PATERS>/LOGINSERVLET </RURL-PATERS> </SERVLET-MAPPING> <E "
Butuh Paket Jar
C3P0-0.9.1.2.Jar
commons-dutils-1.4.jar
java-mail-1.4.4.jar
mysql-connector-java-5.1.34-bin.jar
myconutil.jar
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.