โครงการนี้เป็นโครงการที่รวม Javaweb และอีเมล เว็บไซต์จำลองจะต้องเปิดใช้งานบัญชีอีเมลก่อนที่จะสามารถใช้งานได้
สร้างฐานข้อมูล
สร้างผู้ใช้ตาราง (ID VARCHAR (32) คีย์หลักชื่อ VARCHAR (30), PWD VARCHAR (20), อีเมล VARCHAR (20), Active Char (1), Acode Varchar (32))
วัตถุ user.java
แพ็คเกจ cn.hncu.reg.domain; นำเข้า Javax.persistence.table; ผู้ใช้ระดับสาธารณะ {รหัสสตริงส่วนตัว; ชื่อสตริงส่วนตัว; สตริงส่วนตัว PWD; acode สตริงส่วนตัว; สตริงส่วนตัวที่ใช้งานอยู่; อีเมลสตริงส่วนตัว สตริงสาธารณะ getId () {return id; } โมฆะสาธารณะ setId (รหัสสตริง) {this.id = id; } สตริงสาธารณะ getName () {ชื่อคืน; } โมฆะสาธารณะ setName (ชื่อสตริง) {this.name = name; } สตริงสาธารณะ getpwd () {return pwd; } โมฆะสาธารณะ setpwd (สตริง pwd) {this.pwd = pwd; } สตริงสาธารณะ getAcode () {return acode; } โมฆะสาธารณะ setAcode (สตริง acode) {this.acode = acode; } สตริงสาธารณะ getActive () {return active; } โมฆะสาธารณะ setActive (สตริงที่ใช้งานอยู่) {this.active = active; } สตริงสาธารณะ getEmail () {ส่งคืนอีเมล; } โมฆะสาธารณะ setEmail (อีเมลสตริง) {this.email = อีเมล; } @Override สาธารณะ int hashCode () {สุดท้าย int prime = 31; int ผลลัพธ์ = 1; result = prime * result + ((id == null)? 0: id.hashCode ()); ผลการกลับมา; } @Override บูลีนสาธารณะเท่ากับ (Object obj) {ถ้า (this == obj) คืนค่าจริง; ถ้า (obj == null) ส่งคืนเท็จ; ถ้า (getClass ()! = obj.getClass ()) ส่งคืนเท็จ; ผู้ใช้อื่น ๆ = (ผู้ใช้) obj; if (id == null) {ถ้า (อื่น ๆ . id.id! = null) ส่งคืน false; } อื่นถ้า (! id.equals (อื่น ๆ )) ส่งคืน false; กลับมาจริง; -c3p0pool.java
แพ็คเกจ cn.hncu.pubs; นำเข้า java.sql.connection; นำเข้า java.sql.sqlexception; นำเข้า javax.sql.datasource; นำเข้า com.mchange.v2.c3p0.combopooleddatasource; threadlocal แบบคงที่ส่วนตัว <การเชื่อมต่อ> tl = new ThreadLocal <การเชื่อมต่อ> (); การเชื่อมต่อแบบคงที่สาธารณะ getCon () พ่น sqlexception {การเชื่อมต่อ con = (การเชื่อมต่อ) tl.get (); if (con == null) {con = ds.getConnection (); tl.set (con); } return con; } dataSource สาธารณะ getPool () {return ds; } public Static threadLocal <Connection> getTl () {return tl; -c3p0-config.xml
<c3p0-config> <!-การกำหนดค่าเริ่มต้นหากไม่ได้ระบุให้ใช้การกำหนดค่านี้-> <default-config> <property name = "driverclass"> com.mysql.jdbc.driver </คุณสมบัติ> <property name = "jdbcurl"> <! [CDATA [JDBC: MySQL: //127.0.0.1: 3306/SSTUD? useUnicode = true & caractaryEncoding = UTF-8]> </คุณสมบัติ> <property name = "user"> root </property> <property name = "รหัสผ่าน"> 1234 </ เวลาว่างสูงสุด-> <property name = "MaxidLetime"> 30 </prove> <!-มีการเชื่อมต่อมากที่สุดเท่าไหร่-> <property name = "MaxPoolSize"> 10 </property> <! name = "MaxStatements"> 50 </perty> </default-config> <!-ชื่อการกำหนดค่า-> <named -config name = "hncu"> <property name = "driverclass"> com.mysql.jdbc.driver </property> <property name = "jdbcurl"> jdbc: mysql: //127.0.0.1: 3306/sstud </คุณสมบัติ> <property name = "ผู้ใช้"> รูท </คุณสมบัติ> <property name = "รหัสผ่าน"> 1234 </property> name = "InitialPoolSize"> 100 </property> <property name = "minpoolsize"> 50 </property> <property name = "MaxPoolSize"> 1000 </คุณสมบัติ> <property name = "MaxStatements"> 0 </property> </named-config> </c3p0-config>
regdao.java
แพ็คเกจ cn.hncu.reg.dao; นำเข้า cn.hncu.reg.domain.user; อินเตอร์เฟสสาธารณะ regdao {ผู้ใช้สาธารณะ reg (ผู้ใช้ผู้ใช้); ผู้ใช้สาธารณะที่ใช้งานอยู่ (สตริง acode);}regdaojdbc.java
แพ็คเกจ cn.hncu.reg.dao; นำเข้า java.sql.sqlexception; นำเข้า java.util.uuid; นำเข้า javax.sql.datasource; นำเข้า org.apache.commons.dbutils.queryrunner; org.apache.commons.dbutils.handlers.beanlisthandler นำเข้า cn.hncu.pool.c3p0pool; นำเข้า cn.hncu.reg.domain.user; QueryRunner QR = ใหม่ QueryRunner (DS); String SQL = "แทรกลงในผู้ใช้ (ID, ชื่อ, PWD, อีเมล, Active, Acode) ค่า (?,?,?,?,?,?)"; ลอง {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 ("ลงทะเบียนล้มเหลว"); คืนค่า null; } return user; } @Override ผู้ใช้สาธารณะที่ใช้งานอยู่ (สตริง acode) {dataSource ds = c3p0pool.getPool (); QueryRunner QR = ใหม่ QueryRunner (DS); String sql = "เลือก * จากผู้ใช้ที่ acode =?"; ผู้ใช้ผู้ใช้ = null; ลอง {user = qr.Query (SQL, ใหม่ beanHandler (user.class), acode); if (user! = null) {sql = "อัปเดต SET ผู้ใช้ active = '1', acode = '' โดยที่ acode =?"; qr.update (SQL, acode); ผู้ใช้ส่งคืน; }} catch (sqlexception e) {user = null; E.PrintStackTrace (); } return null; -Iregservice.java
แพ็คเกจ cn.hncu.reg.service; นำเข้า cn.hncu.reg.domain.user; อินเทอร์เฟซสาธารณะ iregservice {ผู้ใช้สาธารณะ reg (ผู้ใช้ผู้ใช้); ผู้ใช้สาธารณะที่ใช้งานอยู่ (สตริง acode);}regservice.java
แพ็คเกจ cn.hncu.reg.service; นำเข้า cn.hncu.reg.dao.regdao; นำเข้า cn.hncu.reg.dao.regdaojdbc; นำเข้า cn.hncu.reg.domain.user; @Override ผู้ใช้สาธารณะ reg (ผู้ใช้ผู้ใช้) {return dao.reg (ผู้ใช้); } @Override ผู้ใช้สาธารณะที่ใช้งานอยู่ (สตริง acode) {return dao.active (acode); -regservlet.java
แพ็คเกจ cn.hncu.reg.servlet; นำเข้า java.io.ioexception; นำเข้า java.io.printwriter; นำเข้า Javax.servlet.servletexception; นำเข้า Javax.servlet.http.httpservlet; javax.servlet.http.httpservletResponse; นำเข้า cn.hncu.reg.domain.user; นำเข้า cn.hncu.reg.sendmail.sendemailthread; นำเข้า cn.hncu.reg.service.iregservice; บริการ iRegService = ใหม่ regService (); โมฆะสาธารณะ DOGET (คำขอ httpservletRequest, การตอบสนอง httpservletResponse) พ่น servletexception, ioexception {response.setContentType ("text/html"); PrintWriter out = response.getWriter (); out.println ("<! doctype html สาธารณะ/"-// w3c // dtd html 4.01 transitional // en/">"); out.println ("<html>"); out.println ("<head> <title> a servlet </title> </head>"); out.println ("<body>"); out.println ("<body>"); out.println ("กรุณากรอกตามที่ต้องการ"); out.println ("</body>"); out.println ("</html>"); out.flush (); out.close (); } โมฆะสาธารณะ dopost (คำขอ httpservletrequest, การตอบสนอง httpservletResponse) พ่น servletexception, ioexception {printwriter out = response.getWriter (); ชื่อสตริง = request.getParameter ("ชื่อ"); สตริง pwd = request.getParameter ("PWD"); string email = request.getParameter ("อีเมล"); ผู้ใช้ผู้ใช้ = ผู้ใช้ใหม่ (); user.setName (ชื่อ); user.setpwd (PWD); user.setEmail (อีเมล); user = service.reg (ผู้ใช้); if (user! = null) {out.print ("ลงทะเบียนสำเร็จโปรดไปที่ที่อยู่อีเมลเพื่อยืนยัน"); ใหม่ sendemailthread (user.getacode ()). start (); } else {out.print ("ลงทะเบียนล้มเหลว"); -sendemailthread.java
แพ็คเกจ cn.hncu.reg.sendmail; นำเข้า java.util.properties; นำเข้า Javax.mail.authenticator; นำเข้า Javax.mail.message.RecipientType; นำเข้า Javax.mail.messagingException; javax.mail.internet.adddressexception; นำเข้า Javax.mail.internet.internetaddress; นำเข้า Javax.mail.internet.mimemessage; นำเข้า org.apache.log4j.logger; บันทึกส่วนตัวบันทึก = logger.getLogger (sendemailthread.class); สาธารณะ sendemailThread (สตริง acode) {this.acode = acode; } @Override โมฆะสาธารณะเรียกใช้ () {คุณสมบัติ p = คุณสมบัติใหม่ (); P.SetProperty ("mail.host", "smtp.sina.com"); P.SetProperty ("mail.smtp.auth", "true"); เซสชั่นเซสชัน = เซสชัน. getDefaultInstance (p, ใหม่ Authenticator () {@Override PreventAsTeCtionication GetPasswordAuthentication () {PasswordAuthentication PA = PasswordAuthentication ใหม่ ("HNCUJAVA", 1234567 "); session.setDebug (จริง); MEMEMESSAGE MSG = MEMEMESSAGE ใหม่ (เซสชัน); ลอง {msg.setFrom (InternetAddress ใหม่ ("[email protected]")); msg.setRecipient (ผู้รับ TEACIENTTO.TO, InternetAddress ใหม่ ("[email protected]")); msg.setSubject ("เปิดใช้งานบัญชี 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; นำเข้า java.io.ioexception; นำเข้า java.io.printwriter; นำเข้า Javax.servlet.servletexception; นำเข้า Javax.servlet.http.httpservlet; javax.servlet.http.htttservletResponse; นำเข้า cn.hncu.reg.domain.user; นำเข้า cn.hncu.reg.service.iregservice; นำเข้า cn.hncu.reg.service.regservice; โมฆะสาธารณะ DOGET (คำขอ httpservletRequest, การตอบสนอง httpservletResponse) พ่น servletexception, ioexception {printwriter out = response.getWriter (); string acode = request.getParameter ("acode"); ผู้ใช้ user = service.active (acode); request.setAttribute ("ผู้ใช้" ผู้ใช้); System.out.println ("ผู้ใช้:"+ผู้ใช้); request.getRequestDispatcher ("/jsps/result.jsp"). forward (คำขอ, การตอบกลับ); -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> <mheat> การเข้าสู่ระบบอีเมล </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: ถ้า test = "$ {! ข้อผิดพลาดว่างเปล่า}"> การเข้าสู่ระบบล้มเหลว <c: ลบ var = "ข้อผิดพลาด" scope = "เซสชัน"/> </c: ถ้า> <c: ถ้าทดสอบ = "$ {sessionscope.user.user.user}" var = "boo" type = "text" name = "name" value = "wang"/> <br/> รหัสผ่าน: <อินพุต type = "text" name = "pwd" value = "1234"/> <br/> <อินพุต type = "ปุ่ม" value = "login" onClick = "login ();"/> <br/> </c: ถ้า> <c: ถ้า test = "$ {! boo}"> ยินดีต้อนรับกลับ, $ {sessionscope.user.name} </c: ถ้า> </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 = "$ {ว่างเปล่า sessionscope.user}" var = "boo"> <h3> การลงทะเบียนผู้ใช้ </h3> <form action = "" method = "post"> ชื่อ: <อินพุตประเภท = "ข้อความ" ชื่อ value = "1234"/> <br/> อีเมล: <อินพุต type = "text" name = "อีเมล" value = "[email protected]"/> <br/> <อินพุตประเภท = "ปุ่ม" value = "register" onClick = "reg ();"/> <br/>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; ฟังก์ชั่นเริ่มต้น () {div1.innerhtml = "จะกระโดดใน"+เวลา+"วินาที"; เวลา--; ถ้า (เวลา <= 1) {window.clearinterval (tm); window.location.href = "<c: url value = '/index.jsp'/>"; }} onLoad = function () {tm = window.setInterval (เริ่มต้น, 1000); - </script> </head> <body> <c: ถ้า test = "$ {! requestscope.user}" var = "boo"> ขอแสดงความยินดีกับการลงทะเบียนที่ประสบความสำเร็จ! กรุณาเข้าสู่ระบบ <a href = '<c: url value = "/index.jsp"/>'> เข้าสู่ระบบ </a> <br/> <br/> <div id = "div1"> </div> </c: ถ้า> <c: ถ้าทดสอบ = "$ {boo}">web.xml
<? xml เวอร์ชัน = "1.0" การเข้ารหัส = "utf-8"?> <web-app version = "3.0" xmlns = "http://java.sun.com/xml/ns/javaee" xmlns: xsi = "http://ww.w3.org/200 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 <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> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <scription> นี่คือคำอธิบายของส่วนประกอบ j2ee ของฉัน </คำอธิบาย> <pramplay-name> นี่คือชื่อที่แสดงขององค์ประกอบ j2ee ของฉัน </display-name> <servlet-name> </servlet> <servlet> <sideced> นี่คือคำอธิบายขององค์ประกอบ j2ee ของฉัน </คำอธิบาย> <pramplay-name> นี่คือชื่อที่แสดงของส่วนประกอบ J2ee ของฉัน </display-name> <servlet-name> activeServlet </servlet-name> Component </คำอธิบาย> <display-name> นี่คือชื่อการแสดงผลของ J2ee Component ของฉัน </display-name> <servlet-name> loginservlet </servlet-name> <servlet-lass> cn.hncu.login.loginservlet </servlet-class> <url-pattern>/regservlet </url-pattern> </servlet-mapping> <servlet-mapping> <servlet-mapping> <servlet-name> activeServlet </servlet-name> <url-pattern>/activeServlet </url-pattern> <url-pattern>/loginservlet </url-pattern> </servlet-mapping> <felcome-file-list> <welcome-file> index.jsp </welcome-file>
ต้องการแพ็คเกจ 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 มากขึ้น