บทความนี้ใช้วิธีการเข้าสู่ระบบ Javaweb สำหรับการอ้างอิงของคุณ เนื้อหาเฉพาะมีดังนี้
ก่อนอื่นเราต้องใช้กระบวนการพื้นฐานของการเข้าสู่ระบบ Javaweb: ส่งคำขอในหน้า JSP -> servlet -> servlet รับข้อมูลจากฐานข้อมูลโดยวิธีการโทรและส่งคืนผลลัพธ์ไปยังหน้า
ก่อนอื่นเราจะสร้างหน้า JSP สามหน้ารวมถึง login.jsp (หน้าเข้าสู่ระบบ), index.jsp (แสดงข้อมูลหลังจากสำเร็จการเข้าสู่ระบบ) และ error.jsp (หน้าที่ไม่สามารถเข้าสู่ระบบ) เนื้อหาของสองหน้าสุดท้ายสามารถเขียนได้ตามต้องการและเนื้อหาหลักของหน้า login.jsp มีดังนี้:
<form action = "loginServlet" method = "post"> ชื่อผู้ใช้: <อินพุต type = "text" name = "ชื่อผู้ใช้"/>>>>> <อินพุต type = "รหัสผ่าน" ชื่อ = "รหัสผ่าน"/> <อินพุตประเภท = "ส่ง" value = "ส่ง"
ที่จุดเริ่มต้นของไฟล์ login.jsp เราจำเป็นต้องเปลี่ยน pageencoding = "iso-8859-1" เป็น pageencoding = "utf-8" (ในเวลาเดียวกันอย่าลืมตั้งค่ารูปแบบการเข้ารหัสของเครื่องมือพัฒนามิฉะนั้นหน้า JSP จะแสดงรหัส
จากสองแอตทริบิวต์ของชื่อผู้ใช้และรหัสผ่านเราสร้างคลาสเอนทิตีที่สอดคล้องกันและเพิ่มวิธีการรับและตั้งค่า รหัสมีดังนี้:
ผู้ใช้ระดับสาธารณะ {ชื่อผู้ใช้สตริงส่วนตัว; รหัสผ่านสตริงส่วนตัว สตริงสาธารณะ getUserName () {ส่งคืนชื่อผู้ใช้; } โมฆะสาธารณะ setUserName (ชื่อผู้ใช้สตริง) {this.userName = ชื่อผู้ใช้; } สตริงสาธารณะ getPassword () {ส่งคืนรหัสผ่าน; } โมฆะสาธารณะ setPassword (รหัสผ่านสตริง) {this.password = รหัสผ่าน; - Action = "LoginServlet" ในหน้า JSP หมายถึงการส่งคำขอไปยัง Servlet สำหรับการประมวลผล ต่อไปเราไปที่ Servlet เพื่อดำเนินการ:
นำเข้า java.io.ioexception; นำเข้า Javax.servlet.servletexception; นำเข้า Javax.servlet.http.httpservlet; นำเข้า Javax.servlet.http.httpservletrequest; นำเข้า Javax.servlet.http.https servlet แทนคลาสเมื่อสร้าง จะต้องมีการกำหนดค่าใน web.xml รหัสที่กำหนดค่า MyEclipse จะสร้าง LoginServlet คลาสสาธารณะโดยอัตโนมัติจะขยาย httpservlet {// สร้างวัตถุ UserDao เพื่ออำนวยความสะดวกในการสอบถามฐานข้อมูล UserDao UserDao = ใหม่ userDaO (); // วิธีการ doGet ต่อไปนี้และวิธีการ DOPOST สอดคล้องกับวิธีการ = "get" และ method = "post" ในรูปแบบฟอร์มตามลำดับ doget สาธารณะ (httpservletrequest คำขอ, httpservletresponse การตอบสนอง) โยน servletexception, ioexception {} public void dopost {} โมฆะสาธารณะ dopost (คำขอ httpservletrequest, การตอบสนอง httpservletResponse) พ่น servletexception, ioexception {// ใช้วิธี getParameter เพื่อให้ค่าที่ป้อนในกล่องข้อความเบื้องหน้าซึ่งเนื้อหาในวงเล็บ สตริงรหัสผ่าน = request.getParameter ("รหัสผ่าน"); // เรียกเมธอด getSelect ใน UserDao และรับค่าคืนค่า Boolean Flag = userDao.getSelect (ชื่อผู้ใช้รหัสผ่าน); // ส่งต่อไปยังหน้า index.jsp ถ้า (ตั้งค่าสถานะ) {request.getRequestDispatcher ("index.jsp"). forward (คำขอ, การตอบกลับ); } resement.sendredirect ("error.jsp"); - สิ่งที่ฉันได้พูดไปแล้วในความคิดเห็นนั้นชัดเจนมากดังนั้นฉันจะไม่ทำซ้ำอีกต่อไป คุณสามารถดูที่บรรทัดที่ 26 และบรรทัด 29 ซึ่ง 26 กำลังส่งต่อและ 29 กำลังเปลี่ยนเส้นทาง เพื่อนที่สนใจสามารถตรวจสอบความแตกต่างระหว่างทั้งสอง ส่วนที่เหลือคือการดำเนินการแบบสอบถามเกี่ยวกับฐานข้อมูลที่เรากล่าวถึงก่อนหน้านี้ เราเรียกมันว่าในบรรทัดที่ 23 และวิธีการต่อไปนี้เราเสร็จสิ้นการโทร:
แพ็คเกจ com.test.dao; นำเข้า java.sql.connection; นำเข้า java.sql.drivermanager; นำเข้า java.sql.preparedStatement; นำเข้า java.sql.resultset; ผู้ใช้ระดับสาธารณะ {// การเชื่อมต่อการเชื่อมต่อสาธารณะ // การเชื่อมต่อฐานข้อมูลรหัสผ่านสตริงรหัสผ่าน = ""; String driver = "com.mysql.jdbc.driver"; // โดยที่การทดสอบคือสตริงชื่อฐานข้อมูล url = "jdbc: mysql: // localhost: 3306/test"; การเชื่อมต่อ conn = null; ลอง {class.forName (ไดรเวอร์); conn = (การเชื่อมต่อ) drivermanager.getConnection (URL, ชื่อผู้ใช้, รหัสผ่าน); } catch (exception e) {e.printstacktrace (); } return conn; } // วิธีการสอบถามหากมีข้อมูลที่ตรงกับเงื่อนไขจะส่งคืนบูลีนสาธารณะจริง getSelect (ชื่อผู้ใช้สตริงรหัสผ่านสตริง) {flag บูลีน = false; String SQL = "SELECT * จากผู้ใช้ที่ชื่อผู้ใช้ = '"+ชื่อผู้ใช้+"' และรหัสผ่าน = '" รหัสผ่าน+"'"; Connection conn = getCon (); PreparedStatement PST = NULL; ลอง {PST = (PreparedStatement) Conn.Preparestatement (SQL); resultset rs = pst.executeQuery (); if (rs.next ()) {flag = true; }} catch (exception e) {} return flag; -ในวิธีนี้เราเชื่อมต่อกับฐานข้อมูลก่อนจากนั้นส่งผ่านชื่อผู้ใช้และรหัสผ่านที่ได้รับจากหน้า JSP เพื่อตรวจสอบว่าผู้ใช้ชื่อผู้ใช้และรหัสผ่านนี้มีอยู่ในฐานข้อมูลหรือไม่ หากมีอยู่มันจะส่งคืนจริงมิฉะนั้นจะส่งคืนเท็จ (อย่าลืมนำเข้าแพ็คเกจที่เชื่อมโยงกับฐานข้อมูล)
สำหรับฟิลด์ในฐานข้อมูลคุณสามารถใช้ผู้ใช้คลาสเอนทิตีเพื่อสร้างมันนั่นคือคุณรวมคุณลักษณะสองอย่าง: ชื่อผู้ใช้และรหัสผ่าน หากคุณมีคำถามใด ๆ เกี่ยวกับลิงก์ฐานข้อมูลโปรดดูบทความก่อนหน้าเกี่ยวกับส่วนฐานข้อมูล
สุดท้ายมาดูการกำหนดค่าใน web.xml:
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://java.sun.com/xml 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 <servlet> <servlet-name> loginservlet </servlet-name> <servlet-lass> com.test.servlet.loginservlet </servlet-lass> </servlet> <servlet-mapping> <servlet-name> loginservlet </servlet-name>
สามารถเขียน <servlet-name> ใน <servlet> ได้ตามต้องการเพียงตรวจสอบให้แน่ใจว่าชิ้นส่วนบนและล่างเหมือนกัน
จากนั้นก็มีเส้นทางของ servlet ที่กำหนดโดยตัวคุณเอง (รวมถึงชื่อแพ็คเกจ) และในที่สุด <url-pattern> เนื้อหาภายในยังสามารถเขียนได้ตามต้องการ แต่แอตทริบิวต์การกระทำของแบบฟอร์มในหน้า JSP จะต้องเหมือนกับชื่อนี้ (การกระทำไม่มี "/")
ในที่สุดเราจำเป็นต้องเผยแพร่โครงการเว็บไปยัง Tomcat จากนั้นป้อน: http: // localhost: 8080/ชื่อโครงการ/login.jsp ในเบราว์เซอร์เพื่อเข้าถึงและเข้าสู่ระบบ
นี่เป็นเพียงแอปพลิเคชันที่เรียบง่ายและจุดประสงค์คือการช่วยให้เพื่อนทุกคนเข้าใจกระบวนการพื้นฐานของการพัฒนา JSP+Servlet แน่นอนเราจะดำเนินการแบ่งส่วนโดยละเอียดมากขึ้นในกระบวนการพัฒนาจริงรวมถึงอินเทอร์เฟซคลาสการใช้งาน ฯลฯ