ความต้องการ
ตรวจสอบว่ารหัสผ่านบัญชีที่ป้อนโดยผู้ใช้มีอยู่ในฐานข้อมูลผ่านหน้ารีเฟรช Ajax แบบอะซิงโครนัสหรือไม่
สแต็คเทคโนโลยี
jsp+servlet+oracle
รหัสเฉพาะ
ส่วน JSP:
<%@ page language = "java" contentType = "ข้อความ/html; charset = utf-8" pageencoding = "utf-8"%> <! doctype html สาธารณะ "-// w3c // dtd html 4.01 transitional // en" "http://www.w3.org/tr/html4/loose.dtd"><html><head> <meta http-equiv =" content-type "content =" text/html; charset = utf-8 " xmlhttp = ใหม่ xmlhttprequest (); // เบราว์เซอร์อื่น ๆ นอกเหนือจากเช่นใช้ ajax} catch (tryms) {ลอง {xmlhttp = new ActiveXObject ("msxml2.xmlhtp"); activexObject ("microsoft.xmlhttp"); // iebe adaptation} catch (ล้มเหลว) {xmlhttp = null; }} ส่งคืน xmlhttp; } // ส่งคำขอ var xmlhttp; ฟังก์ชั่น checkuserExists () {var u = document.getElementById ("uname"); ชื่อผู้ใช้ var = u.value; ถ้า (ชื่อผู้ใช้ == "") {แจ้งเตือน ("โปรดป้อนชื่อผู้ใช้"); U.Focus (); กลับเท็จ; } // เข้าถึงสตริง var url = "loginServlet"; // สร้างแกน xmlhttprequest องค์ประกอบ xmlhttp = createxmlhttprequest (); // ตั้งค่าฟังก์ชั่นการโทรกลับ XMLHTTP.OnReadyStateChange = ProessRequest; // เริ่มต้นแกน xmlhttp.open ("โพสต์", url, true); // ตั้งค่าส่วนหัวคำขอ XMLHTTP.SetRequestHeader ("เนื้อหาประเภท", "แอปพลิเคชัน/x-www-form-urlencoded;"); // ส่งคำขอ xmlhttp.send ("uname ="+ชื่อผู้ใช้); } // ฟังก์ชั่นฟังก์ชั่นการโทรกลับ BurdenRequest () {ถ้า (xmlhttp.status == 200 && xmlhttp.readyState == 4) {var b = xmlhttp.responsetext; Color = 'Red'> ชื่อผู้ใช้มีอยู่แล้ว! </font> "; } else {document.getElementById ("Alert"). innerhtml = "<font color = 'blue'> ชื่อผู้ใช้สามารถใช้! </font>"; }}}} </script> <body> โปรดป้อนชื่อผู้ใช้: <อินพุต id = "uname" name = "uname" type = "text" onblur = "checkuserexists ()"/> <div id = "Alert" style = "Inline"> </div> ไม่มีเลเยอร์ DAO ที่นี่เพียงใช้ Servlet และ Service Layer สำหรับการตรวจสอบ
นี่คือรหัสสำหรับการค้นหา JDBC ภายใต้บริการ:
นำเข้า java.sql.Connection; นำเข้า java.sql.resultset; นำเข้า java.sql.sqlexception; นำเข้า java.sql.statement; นำเข้า com.stx.service.user; นำเข้า com.stx.service.cannectionanager; ชื่อผู้ใช้มีอยู่ในบูลีน isfalse = false; การเชื่อมต่อการเชื่อมต่อ = null; คำสั่ง stmt = null; ผลลัพธ์ RS = NULL; การเชื่อมต่อ = connectionManager.getConnection (); ลอง {stmt = connection.createstatement (); string sql = "เลือก * จาก user_b โดยที่ uname = '"+Uname+"'"; // sql คำสั่ง rs = stmt.executeQuery (SQL); isfalse = rs.next (); } catch (sqlexception e) {e.printstacktrace (); } ในที่สุด {ConnectionManager.closeresultset (RS); ConnectionManager.Closestatement (STMT); ConnectionManager.Closeconnection (การเชื่อมต่อ); } return isfalse; -รหัสการเชื่อมต่อ JDBC:
นำเข้า java.sql.Connection; นำเข้า java.sql.driverManager นำเข้า java.sql.resultset; นำเข้า java.sql.sqlexception; นำเข้า Java.sql.statement; url สตริงคงสุดท้ายส่วนตัวสุดท้าย = "JDBC: Oracle: Thin: @localhost: 1521: ORCL"; สตริงคงสุดท้ายส่วนตัว dbname = "iBook"; รหัสผ่านสตริงคงสุดท้ายส่วนตัว = "qwer"; การเชื่อมต่อแบบคงที่สาธารณะ getConnection () {การเชื่อมต่อการเชื่อมต่อ = null; ลอง {class.forName (driver_class); การเชื่อมต่อ = DriverManager.getConnection (URL, DBNAME, รหัสผ่าน); } catch (classnotFoundException e) {e.printStackTrace (); } catch (sqlexception e) {e.printstacktrace (); } ส่งคืนการเชื่อมต่อ; } โมฆะคงที่สาธารณะใกล้ชิด (ผลลัพธ์ RS) {ลอง {ถ้า (rs! = null) rs.close (); } catch (sqlexception e) {e.printstacktrace (); }} โมฆะคงที่สาธารณะ closeconnection (การเชื่อมต่อการเชื่อมต่อ) {ลอง {ถ้า (การเชื่อมต่อ! = null &&! connection.isclosed ()) connection.close (); } catch (sqlexception e) {e.printstacktrace (); }} โมฆะคงที่สาธารณะใกล้ชิด (คำสั่ง stmt) {ลอง {ถ้า (stmt! = null) stmt.close (); } catch (sqlexception e) {e.printstacktrace (); -เกี่ยวกับคลาสผู้ใช้:
ผู้ใช้ระดับสาธารณะ {uname สตริงส่วนตัว; ผู้ใช้สาธารณะ () {super (); } ผู้ใช้สาธารณะ (uname สตริง) {super (); this.uname = Uname; } สตริงสาธารณะ getUname () {return uname; } โมฆะสาธารณะ setUname (uname string) {this.uname = uname; -เกี่ยวกับ Servlet ชั้นควบคุม:
นำเข้า java.io.ioexception; นำเข้า java.io.printwriter; นำเข้า Javax.servlet.servletexception; นำเข้า Javax.servlet.http.httpservlet; นำเข้า Javax.servlet.http.httpservletRequest; com.stx.service.ajaxservice;/** * การใช้งานระดับ Servlet LoginServlet */Public Class LoginServlet ขยาย HTTPSERVLET {ส่วนตัวคงที่ความยาวสุดท้าย Ajaxservice ส่วนตัว AjaxService = ใหม่ AjaxService (); / ** * @See httpservlet#httpservlet () */ ล็อกอินสาธารณะ () {super (); // toDo toDo ที่สร้างขึ้นอัตโนมัติ stub}/ ** * @see httpservlet#doget (คำขอ httpservletrequest, การตอบสนอง httpservletResponse) */ void doget (httpservletRequest Request, HttpServletResponse uname uname = request.getParameter ("uname"); // รับชื่อผู้ใช้อินพุตบูลีน isuname = ajaxservice.searchuser (uname); // วิธีการสอบถามการโทรในการตอบสนองการบริการ SetchAracterencoding ("UTF-8"); // ตั้งค่าการเข้ารหัสตัวละคร out.print (isuname); out.flush (); out.close (); // ทรัพยากรปิด}/** * @see httpservlet#dopost (คำขอ httpservletrequest, การตอบสนอง httpservletResponse) */การป้องกันโมฆะ dopost (httpservletrequest request, httpservletresponse การตอบสนอง); -ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น