บทความนี้อธิบายสั้น ๆ เกี่ยวกับการใช้ Javabean เพื่อตระหนักถึงการเข้าสู่ระบบของผู้ใช้รวมถึงการเข้าสู่ระบบผู้ใช้การลงทะเบียนและออกจากระบบ
1. เกี่ยวกับ Javabean
Javabean เป็นองค์ประกอบที่นำมาใช้ซ้ำได้ในภาษา Java ในการเขียนเป็น javabean ชั้นเรียนจะต้องเฉพาะเจาะจงและสาธารณะและมีตัวสร้างที่ไม่มีพารามิเตอร์ Javabeans เปิดเผยโดเมนภายในให้กับคุณสมบัติของสมาชิกตั้งค่าและรับวิธีการโดยการจัดหาวิธีการสาธารณะที่สอดคล้องกับรูปแบบการออกแบบที่สอดคล้องกัน อย่างที่เราทราบกันดีว่าชื่อแอตทริบิวต์สอดคล้องกับรูปแบบนี้และคลาส Java อื่น ๆ สามารถค้นพบและจัดการคุณสมบัติของ Javabeans เหล่านี้ผ่านกลไกการวิปัสสนา
2. สถาปัตยกรรมระบบ
2.1 ไดอะแกรมการใช้งานเข้าสู่ระบบ
2.2 ผังหน้า
2.3 ไดอะแกรมสถาปัตยกรรมระบบ
2.4 การออกแบบฐานข้อมูล
ตัวอย่างนี้ใช้ฐานข้อมูล Oracle
ตารางผู้ใช้ประกอบด้วย ID, ชื่อผู้ใช้, รหัสผ่าน, อีเมลและทั้งหมด 4 ฟิลด์
- สร้างตารางสร้างตาราง P_USER (ID VARCHAR2 (50) ไม่ใช่ NULL, ชื่อผู้ใช้ VARCHAR2 (20), รหัสผ่าน VARCHAR2 (20), อีเมล VARCHAR2 (50)) ผู้ใช้พื้นที่ Tablespace PCTFREE 10 INITRANS 1 MAXTRANS 255 ที่เก็บข้อมูล - เพิ่มความคิดเห็นในความคิดเห็นของตารางบนตาราง P_USER คือ 'ตารางผู้ใช้'; - เพิ่มความคิดเห็นไปยังคอลัมน์ความคิดเห็นในคอลัมน์ p_user.id คือ 'id'; ความคิดเห็นในคอลัมน์ p_user.username คือ 'ชื่อผู้ใช้'; ความคิดเห็นในคอลัมน์ p_user.password คือ 'รหัสผ่าน'; ความคิดเห็นในคอลัมน์ p_user.email คือ 'อีเมล';
3. การเขียน Javabean
3.1 การพัฒนาการประมวลผลฐานข้อมูลพื้นฐานของ Javabeans
dbacess.java
แพ็คเกจ com.baosight.bean; นำเข้า java.sql.connection; นำเข้า java.sql.drivermanager; นำเข้า java.sql.resultset; นำเข้า java.sql.sqlexception; นำเข้า java.sql.statement; /** คลาสการดำเนินงานฐานข้อมูล * <p> ชื่อเรื่อง: dbacess </p> * <p> คำอธิบาย: TODO </p> * <p> บริษัท : </p> * @author yuan * @date 2016-5-22 12:40:24 PM */ชั้นเรียนสาธารณะ url สตริงส่วนตัว = "JDBC: Oracle:" + "Thin:@127.0.0.1: 1521: ORCL"; ชื่อผู้ใช้สตริงส่วนตัว = "Scott"; รหัสผ่านสตริงส่วนตัว = "เสือ"; การเชื่อมต่อส่วนตัว Conn; คำแถลงส่วนตัว STM; ชุดผลลัพธ์ส่วนตัว RS; // สร้างการเชื่อมต่อบูลีนสาธารณะ createConn () {boolean b = false; ลอง {class.forName (ไดรเวอร์); // โหลด oracle driver conn = drivermanager.getConnection (url, ชื่อผู้ใช้, รหัสผ่าน); b = true; } catch (sqlexception e) {// toDo บล็อก catch block ที่สร้างขึ้นอัตโนมัติ E.PrintStackTrace (); } // รับการเชื่อมต่อการเชื่อมต่อ (classnotfoundexception e) {// todo บล็อก catch block ที่สร้างขึ้นอัตโนมัติ e.printstacktrace (); } return b; } // แก้ไขการอัปเดตบูลีนสาธารณะ (String SQL) {Boolean B = FALSE; ลอง {stm = conn.createstatement (); STM.Execute (SQL); b = true; } catch (sqlexception e) {// toDo บล็อก catch block ที่สร้างขึ้นอัตโนมัติ E.PrintStackTrace (); } return b; } // Query Void Query (String SQL) {ลอง {stm = conn.createstatement (); RS = STM.ExecuteQuery (SQL); } catch (sqlexception e) {// toDo บล็อก catch block ที่สร้างขึ้นอัตโนมัติ E.PrintStackTrace (); }} // ตัดสินว่ามีข้อมูลบูลีนสาธารณะ Next () {บูลีน b = false; ลอง {ถ้า (rs.next ()) {b = true; }} catch (sqlexception e) {// todo บล็อก catch block ที่สร้างขึ้นอัตโนมัติ e.printstacktrace (); } return b; } // รับค่าฟิลด์ตารางสตริงสาธารณะ getValue (ฟิลด์สตริง) {ค่าสตริง = null; ลอง {ถ้า (rs! = null) {value = rs.getString (ฟิลด์); }} catch (sqlexception e) {// todo บล็อก catch block ที่สร้างขึ้นอัตโนมัติ e.printstacktrace (); } ค่าส่งคืน; } // ปิดโมฆะสาธารณะการเชื่อมต่อ closeconn () {ลอง {ถ้า (conn! = null) {conn.close (); }} catch (sqlexception e) {// todo บล็อก catch block ที่สร้างขึ้นอัตโนมัติ e.printstacktrace (); }} // คำสั่งปิดโมฆะสาธารณะใกล้เคียง () {ลอง {ถ้า (stm! = null) {stm.close (); }} catch (sqlexception e) {// todo บล็อก catch block ที่สร้างขึ้นอัตโนมัติ e.printstacktrace (); }} // close resultset public void closers () {ลอง {ถ้า (rs! = null) {rs.close (); }} catch (sqlexception e) {// todo บล็อก catch block ที่สร้างขึ้นอัตโนมัติ e.printstacktrace (); }} Public String getDriver () {return driver; } โมฆะสาธารณะ setDriver (ไดรเวอร์สตริง) {this.driver = ไดรเวอร์; } สตริงสาธารณะ getUrl () {return url; } โมฆะสาธารณะ setUrl (rl String) {this.url = url; } สตริงสาธารณะ getUserName () {ส่งคืนชื่อผู้ใช้; } โมฆะสาธารณะ setUserName (ชื่อผู้ใช้สตริง) {this.userName = ชื่อผู้ใช้; } สตริงสาธารณะ getPassword () {ส่งคืนรหัสผ่าน; } โมฆะสาธารณะ setPassword (รหัสผ่านสตริง) {this.password = รหัสผ่าน; } คำแถลงสาธารณะ getStm () {return stm; } โมฆะสาธารณะ setStm (คำสั่ง stm) {this.stm = stm; } public resultset getrs () {return rs; } โมฆะสาธารณะ setRs (ResultSet RS) {this.rs = rs; } โมฆะสาธารณะ setConn (Connection Conn) {this.conn = conn; } การเชื่อมต่อสาธารณะ getConn () {return conn; -คลาสการดำเนินการฐานข้อมูลด้านบนใช้ JDBC เพื่อเชื่อมต่อกับฐานข้อมูลและห่อหุ้มวิธีการเช่นการเชื่อมต่อกับฐานข้อมูลการสืบค้นการแก้ไขและการปิดทรัพยากร
3.2 พัฒนาองค์ประกอบตรรกะทางธุรกิจของ Javabean
userbean.java
แพ็คเกจ com.baosight.bean; นำเข้า com.baosight.util.generateuuid; /** * <p> ชื่อเรื่อง: UserBean </p> * <p> คำอธิบาย: TODO </p> * <p> บริษัท : </p> * @author yuan * @date 2016-5-22 1:05:00 PM */ผู้ใช้ระดับสาธารณะ dbacess db = new dbacess (); if (db.createConn ()) {string sql = "เลือก * จาก p_user โดยที่ชื่อผู้ใช้ = '"+ชื่อผู้ใช้+"' และรหัสผ่าน = '" รหัสผ่าน+"'"; db.Query (SQL); if (db.next ()) {isvalid = true; } db.closers (); db.closestm (); db.closeconn (); } return isvalid; } // ลงทะเบียนการตรวจสอบบูลีนสาธารณะ (ชื่อผู้ใช้สตริง) {บูลีน isvalid = false; dbacess db = new dbacess (); if (db.createConn ()) {string sql = "เลือก * จาก p_user ที่ชื่อผู้ใช้ = '"+ชื่อผู้ใช้+"'"; db.Query (SQL); if (db.next ()) {isvalid = true; } db.closers (); db.closestm (); db.closeconn (); } return isvalid; } // ลงทะเบียนบูลีนสาธารณะผู้ใช้เพิ่ม (ชื่อผู้ใช้สตริง, รหัสผ่านสตริง, อีเมลสตริง) {บูลีน isValid = false; dbacess db = new dbacess (); if (db.createConn ()) {string sql = "แทรกลงใน p_user (id, ชื่อผู้ใช้, รหัสผ่าน, อีเมล) ค่า ('"+generateUuid.next ()+"', '"+ชื่อผู้ใช้+"', '"+"', '"+อีเมล+"); db.closeconn ();ตรรกะทางธุรกิจด้านบน Javabean กำหนดวิธีการเช่นการตรวจสอบเข้าสู่ระบบการตรวจสอบการลงทะเบียนและผู้ใช้ใหม่
3.3 เกี่ยวกับการสร้าง ID ที่ไม่ซ้ำกัน
ข้างต้นจำเป็นต้องแทรก ID เมื่อเพิ่มผู้ใช้ใหม่ ในตัวอย่างนี้ UUID ใช้เพื่อสร้าง ID ที่ไม่ซ้ำกัน
generateuuid.java
แพ็คเกจ com.baosight.util; นำเข้า java.util.date; /** * <p> ชื่อเรื่อง: generateUuid </p> * <p> คำอธิบาย: TODO </p> * <p> บริษัท : </p> * @author yuan * @date 2016-5-22 1:31:46 PM */คลาสสาธารณะ // stringbuilder แบบคงที่ส่วนตัว buf = new StringBuilder (); int คงที่ส่วนตัว seq = 0; การหมุนรอบสุดท้ายของเอกชนคงที่ = 9999; สาธารณะแบบคงที่แบบคงที่ยาวถัดไป () {ถ้า (seq> การหมุน) seq = 0; // buf.delete (0, buf.length ()); Date.settime (System.currentTimeMillis ()); string str = string.format ("%1 $ ty%1 $ tm%1 $ td%1 $ tk%1 $ tm%1 $ ts%2 $ 05d", วันที่, seq ++); กลับ Long.parselong (STR); } โมฆะคงที่สาธารณะหลัก (สตริง [] args) {สำหรับ (int i = 0; i <100; i ++) {system.out.println (ถัดไป ()); - 4. การเขียนหน้า
4.1 หน้าเข้าสู่ระบบ
เข้าสู่ระบบ.jsp
<%@ page language = "java" import = "java.util.*" pageencoding = "utf-8"%> <%String Path = request.getContextPath (); String basepath = request.getScheme ()+": //"+request.getServerName ()+":"+request.getServerport ()+path+"/"; %> <! doctype html public "-// w3c // dtd html 4.01 transitional // en"> <html> <head> <base href = "<%= basepath%>"> <title> http-equiv = "cache-control" content = "no-cache"> <meta http-equiv = "Expires" content = "0"> <meta http-equiv = "คำหลัก" content = "keyword1, คำหลัก 2, คำหลัก type = "text/css" href = "styles.css"> -> </head> <body> <form action = "login_action.jsp" method = "post"> <table> <tr> <td colspan = "2"> หน้าต่างเข้าสู่ระบบ </td> </tr> <tr> <td> </td> </tr> <tr> <td> รหัสผ่าน: </td> <td> <อินพุต type = "text" name = "รหัสผ่าน"/> </td> </tr> <tr> <td colspan = "2"> <อินพุตประเภท = "submit" value = "Login"/> <a href = "register.jsp"> < </html>
เอฟเฟกต์หน้า
4.2 เข้าสู่หน้าการประมวลผลตรรกะทางธุรกิจ
login_action.jsp
<%@ page language = "java" import = "java.util.*" pageencoding = "utf-8"%> <%@ page import = "java.sql.*"%> <%@ page import = "com.baosight.bean. String basepath = request.getScheme ()+": //"+request.getServerName ()+":"+request.getServerport ()+path+"/"; %> <% string username = request.getParameter ("ชื่อผู้ใช้"); สตริงรหัสผ่าน = request.getParameter ("รหัสผ่าน"); if (ชื่อผู้ใช้ == null || "". เท่ากับ (ชื่อผู้ใช้. trim ()) || รหัสผ่าน == null || "". เท่ากับ (password.trim ())) {//out.write("username หรือรหัสผ่านไม่ว่าง! "); System.out.println ("ชื่อผู้ใช้หรือรหัสผ่านไม่สามารถว่างเปล่า!"); Response.sendredirect ("login.jsp"); กลับ; //request.getRequestDispatcher("login.jsp"—).Forward(Request, Response); } UserBean UserBean = new UserBean (); บูลีน isvalid = userbean.valid (ชื่อผู้ใช้รหัสผ่าน); if (isvalid) {system.out.println ("เข้าสู่ระบบสำเร็จ!"); session.setAttribute ("ชื่อผู้ใช้", ชื่อผู้ใช้); Response.sendredirect ("welcome.jsp"); กลับ; } else {system.out.println ("ชื่อผู้ใช้หรือรหัสผ่านไม่ถูกต้องการเข้าสู่ระบบล้มเหลว!"); Response.sendredirect ("login.jsp"); กลับ; -JSP ข้างต้นเรียก Javabean สำหรับการประมวลผลธุรกิจ กลับไปที่หน้าเข้าสู่ระบบเมื่อชื่อผู้ใช้หรือรหัสผ่านว่างเปล่า
เมื่อการเข้าสู่ระบบสำเร็จให้บันทึกข้อมูลผู้ใช้ไปยังเซสชันและข้ามไปยังหน้าต้อนรับยินดีต้อนรับ JSP
กลับไปที่หน้าเข้าสู่ระบบเมื่อเข้าสู่ระบบล้มเหลวในการเข้าสู่ระบบ JSP
4.3 เข้าสู่ระบบหน้าต้อนรับสำเร็จ
ยินดีต้อนรับ. jsp
<%@ page language = "java" import = "java.util.*" pageencoding = "utf-8"%> <%String Path = request.getContextPath (); String basepath = request.getScheme ()+": //"+request.getServerName ()+":"+request.getServerport ()+path+"/"; %> <! doctype html public "-// w3c // dtd html 4.01 transitional // en"> <html> <head> <base href = "<%= basepath%>"> <title> my jsp 'welcom.jsp' http-equiv = "cache-control" content = "no-cache"> <meta http-equiv = "Expires" content = "0"> <meta http-equiv = "คำหลัก" content = "keyword1, คำหลัก 2, คำหลัก type = "text/css" href = "styles.css"> -> </head> <body> <body> <tr> <tr> <td> <img src = "รูปภาพ/logo4.png"/> </td> <td> colspan = "2"> <hr/> </td> </tr> <tr> <td> <table> <tr> <td> <a> main </a> </td> </tr> <tr> <td> <a> เมนู </a> </td> </tr> <tr> <td> <td> <td> <a> เมนู 3 </a> </td> </tr> <tr> <td> <a> เมนู 4 </a> </td> </tr> <td> <td> <a> เมนู 5 </a> </td> </tr> <td> <td> <a> เมนู </tr> <tr> <td> <a> เมนู 7 </a> </td> </tr> <tr> <td> <a> เมนู 8 </a> </td> </tr> </tr> </tr> </tr> </tr> </tr> </tr> </tr> </tr> colspan = "2"> เข้าสู่ระบบได้สำเร็จ! </td> </tr> <tr> <td> ยินดีต้อนรับ </td> <td> $ {ผู้ใช้ชื่อ} </td> </tr> <tr> <td> ยินดีต้อนรับ </td> <tr> $ {username} </td> value = "Exit"/> </td> </tr> </table> </form> </td> </tr> </tr> </table> </body> </html>เอฟเฟกต์หน้า
4.4 ออกจากระบบหน้าประมวลผลธุรกิจ
loginout.jsp
<%@ page language = "java" import = "java.util.*" pageencoding = "utf-8"%> <%String Path = request.getContextPath (); String basepath = request.getScheme ()+": //"+request.getServerName ()+":"+request.getServerport ()+path+"/"; %> <! doctype html public "-// w3c // dtd html 4.01 transitional // en"> <html> <head> <base href = "<%= basepath%>"> <title> jsp 'loginout.jsp' http-equiv = "cache-control" content = "no-cache"> <meta http-equiv = "Expires" content = "0"> <meta http-equiv = "คำหลัก" content = "keyword1, คำหลัก 2, คำหลัก type = "text/css" href = "styles.css"> -> </head> <body> <% session.removeattribute ("ชื่อผู้ใช้"); Response.sendredirect ("login.jsp"); %> </body> </html>ลบข้อมูลผู้ใช้ออกจากเซสชันและข้ามไปที่หน้าเข้าสู่ระบบ login.jsp
4.5 หน้าการลงทะเบียนผู้ใช้
register.jsp
<%@ page language = "java" import = "java.util.*" pageencoding = "utf-8"%> <%String Path = request.getContextPath (); String basepath = request.getScheme ()+": //"+request.getServerName ()+":"+request.getServerport ()+path+"/"; %> <! doctype html public "-// w3c // dtd html 4.01 transitional // en"> <html> <head> <base href = "<%= basepath%>"> <title> content = "no-cache"> <meta http-equiv = "Expires" content = "0"> <meta http-equiv = "คำหลัก" content = "keyword1, keyword2, keyword3"> <meta http-equiv = "คำอธิบาย" href = "styles.css"> -> </head> <body> <form action = "register_action.jsp" method = "post"> <bode> <tr> <td colspan = "2"> หน้าต่างลงทะเบียน </td> </tr> <tr> <td> ชื่อผู้ใช้: </td> <td> <td> รหัสผ่าน: </td> <td> <อินพุตประเภท = "ข้อความ" ชื่อ = "รหัสผ่าน 1"/> </td> </tr> <tr> <td> ยืนยันรหัสผ่าน: </td> <td> <อินพุต type = "text" name = "password2"/> </td> </td> <td> /> </td> </tr> <tr> <td colspan = "2"> <อินพุตประเภท = "ส่ง" value = "ลงทะเบียน"/> <a href = "login.jsp"> ส่งคืน </a> </td> </tr> </table>
เอฟเฟกต์การทำงาน
4.6 หน้าประมวลผลธุรกิจการลงทะเบียน
<%@ page language = "java" import = "java.util.*" pageencoding = "utf-8"%> <%@ page import = "java.sql.*"%> <%@ page import = "com.baosight.bean. String basepath = request.getScheme ()+": //"+request.getServerName ()+":"+request.getServerport ()+path+"/"; %> <% string username = request.getParameter ("ชื่อผู้ใช้"); String Password1 = request.getParameter ("Password1"); String Password2 = request.getParameter ("Password2"); string email = request.getParameter ("อีเมล"); if (ชื่อผู้ใช้ == null || "". เท่ากับ (ชื่อผู้ใช้. trim ()) || รหัสผ่าน 1 == null || "". เท่ากับ (รหัสผ่าน 1.Trim ()) || รหัสผ่าน 2 == null || "" password2.Trim ()) System.out.println ("ชื่อผู้ใช้หรือรหัสผ่านไม่สามารถว่างเปล่า!"); Response.sendredirect ("register.jsp"); กลับ; //request.getRequestDispatcher("login.jsp"—).Forward(Request, Response); } UserBean UserBean = new UserBean (); บูลีน isExit = userBean.isexist (ชื่อผู้ใช้); if (! isExit) {userbean.add (ชื่อผู้ใช้, รหัสผ่าน 1, อีเมล); System.out.println ("ลงทะเบียนสำเร็จโปรดเข้าสู่ระบบ!"); Response.sendredirect ("login.jsp"); กลับ; } else {system.out.println ("ชื่อผู้ใช้มีอยู่แล้ว!"); Response.sendredirect ("register.jsp"); กลับ; -JSP ข้างต้นเรียก javabean สำหรับการประมวลผลธุรกิจ
กลับไปที่หน้าลงทะเบียนเมื่อชื่อผู้ใช้หรือรหัสผ่านว่างเปล่า register.jsp
เมื่อชื่อผู้ใช้ที่ลงทะเบียนไม่มีอยู่ในฐานข้อมูลจะมีการเพิ่มผู้ใช้ใหม่
หลังจากการเพิ่มใหม่สำเร็จให้ข้ามไปที่หน้าเข้าสู่ระบบ login.jsp
เมื่อชื่อผู้ใช้ที่ลงทะเบียนอยู่ในฐานข้อมูลให้กลับไปที่หน้าลงทะเบียน register.jsp
5. สรุป
ตัวอย่างนี้ใช้ Javabean เพื่อห่อหุ้มการดำเนินงานฐานข้อมูลและการประมวลผลตรรกะทางธุรกิจ
ข้างต้นเป็นการแนะนำสั้น ๆ เกี่ยวกับการใช้ Javabean เพื่อตระหนักถึงการเข้าสู่ระบบของผู้ใช้และจำเป็นต้องได้รับการปรับปรุงอย่างต่อเนื่อง ฉันหวังว่าทุกคนจะได้เรียนรู้และก้าวหน้าด้วยกัน!