ฟังก์ชั่นของรหัสการตรวจสอบ: โดยปกติเมื่อเข้าสู่ระบบหรือลงทะเบียนระบบผู้ใช้จะต้องป้อนรหัสการยืนยันเพื่อแยกความแตกต่างของพฤติกรรมผู้ใช้จากพฤติกรรมของโปรแกรมคอมพิวเตอร์ วัตถุประสงค์คือเพื่อป้องกันการลงทะเบียนที่เป็นอันตรายการแคร็กรหัสผ่านเดรัจฉาน ฯลฯ
แนวคิดสำหรับการใช้รหัสการตรวจสอบ: ใช้เซิร์ฟเวอร์เพื่อรับรู้ฟังก์ชั่นของการสร้างตัวเลขและตัวอักษรแบบสุ่มเพื่อสร้างรูปภาพใช้หน้า JSP เพื่อรับรู้ฟังก์ชั่นของการแสดงรหัสการตรวจสอบและรหัสการตรวจสอบอินพุตของผู้ใช้จากนั้นใช้คลาสเซิร์ฟเวอร์เพื่อรับข้อมูลจากรูปภาพและผู้ใช้เพื่อตรวจสอบว่าข้อมูลทั้งสองนั้นสอดคล้องกันหรือไม่
การใช้รหัส
1. เขียนคลาสเซิร์ฟเวอร์ที่สร้างขึ้นแบบสุ่มในตัวเลขและภาษาอังกฤษซอร์สโค้ด:
แพ็คเกจ com; นำเข้า java.awt.color; นำเข้า java.awt.font; นำเข้า java.awt.graphics; นำเข้า java.awt.image.bufferedimage; นำเข้า java.io.bytearrayutputstream; นำเข้า java.io.ioexception; javax.servlet.servletexception; นำเข้า javax.servlet.servletoutputstream นำเข้า Javax.servlet.http.httpservlet; นำเข้า Javax.servlet.http.httpservletRequest; javax.servlet.http.httpsession; Logcheck คลาสสาธารณะขยาย httpservlet {public logcheck () {super (); } โมฆะสาธารณะทำลาย () {super.destroy (); } โมฆะสาธารณะ DOGET (คำขอ httpservletRequest, การตอบสนอง httpservletResponse) พ่น servletexception, ioexception {dopost (คำขอ, การตอบสนอง); }/*รหัสหลักของการใช้งาน*/โมฆะสาธารณะ dopost (คำขอ httpservletrequest, การตอบสนอง httpservletResponse) พ่น Servletexception, iOexception {response.setContentType ("image/jpeg"); httpsession session = request.getSession (); ความกว้าง int = 60; ความสูง int = 20; // ตั้งค่าเบราว์เซอร์เพื่อไม่ให้แคชการตอบสนองของภาพนี้ setheader ("pragma", "no-cache"); Response.Setheader ("แคชควบคุม", "ไม่มีแคช"); Response.setDateHeader ("หมดอายุ", 0); // สร้างอิมเมจหน่วยความจำและรับบริบทกราฟิกบัฟเฟอร์เมจอิมเมจ = ใหม่ bufferedImage (ความกว้าง, ความสูง, bufferedImage.type_int_rgb); กราฟิก g = image.getGraphics (); /** สร้างรหัสการตรวจสอบแบบสุ่ม* ตารางอักขระที่กำหนดรหัสการตรวจสอบ*/ string chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; ถ่าน [] rands = ถ่านใหม่ [4]; สำหรับ (int i = 0; i <4; i ++) {int rand = (int) (math.random () *36); Rands [i] = chars.charat (Rand); } /** สร้างภาพ* วาดพื้นหลัง* / g.setColor (สีใหม่ (0xDCDCDC)); G.FillRect (0, 0, ความกว้าง, ความสูง); /** สุ่มสร้างจุดรบกวน 120 จุด*/ สำหรับ (int i = 0; i <120; i ++) {int x = (int) (math.random ()* ความกว้าง); int y = (int) (math.random ()*ความสูง); int red = (int) (math.random ()*255); int green = (int) (math.random ()*255); int blue = (int) (math.random ()*255); G.SetColor (สีใหม่ (สีแดง, เขียว, สีน้ำเงิน)); G.Drawoval (x, y, 1, 0); } g.setColor (color.black); G.SetFont (ตัวอักษรใหม่ (null, font.italic | font.bold, 18)); // เอาท์พุทอักขระที่แตกต่างกันของรหัสการตรวจสอบที่ความสูงที่แตกต่างกัน g.drawstring (""+rands [0], 1, 17); G.DrawString (""+rands [1], 16, 15); G.DrawString (""+rands [2], 31, 18); G.DrawString (""+rands [3], 46, 16); G.Dispose (); // วางรูปภาพไปยังไคลเอนต์ servletoutputstream sos = response.getOutputStream (); ByTeArrayOutputStream BAOS = New ByTeArrayOutputStream (); Imageio.write (รูปภาพ, "jpeg", baos); Byte [] buffer = baos.tobytearray (); Response.SetContentLength (buffer.length); sos.write (บัฟเฟอร์); baos.close (); sos.close (); Session.setAttribute ("CheckCode", New String (Rands)); } public void init () พ่น servletexception {// วางรหัสของคุณที่นี่}} 2. หน้าใช้เพื่อแสดงรหัสการยืนยัน :
<%@ page language = "java" import = "java.util.*" pageencoding = "utf-8"%> <%String Path = request.getContextPath (); String basepath = request.getScheme ()+": //"+"getServerName ()+": " "-// w3c // dtd html 4.01 transitional // en"> <html> <head> <base href = "<%= basepath%>"> <title> ดัชนี </title> <meta http-equiv = "pragma" pragma " http-equiv = "expires" content = "0"> <meta http-equiv = "คำหลัก" content = "คำหลัก 1, keyword2, keyword3"> <meta http-equiv = "คำอธิบาย" เนื้อหา = "นี่คือหน้าของฉัน"> <! <form action = "yanzheng" method = "post"> <input type = "text" name = "name" size = "5" maxlength = "4"> <a href = "index.jsp"> <img src = "logcheck"> </a> <br> <br>
3. ใช้เพื่อตรวจสอบว่ารหัสการตรวจสอบที่ป้อนนั้นถูกต้องหรือไม่:
แพ็คเกจ com; นำเข้า java.io.ioexception; นำเข้า java.io.printwriter; นำเข้า javax.jms.session; นำเข้า Javax.servlet.servletexception; นำเข้า Javax.servlet.http.httpservlet; javax.servlet.http.httpservletResponse; นำเข้า Javax.servlet.http.httpsession; นำเข้า javax.servlet.http.httpsession; ชั้นเรียนสาธารณะ Yanzheng ขยาย httpservlet } โมฆะสาธารณะทำลาย () {super.destroy (); } โมฆะสาธารณะ DOGET (คำขอ httpservletRequest, การตอบสนอง httpservletResponse) พ่น servletexception, ioexception {dopost (คำขอ, การตอบสนอง); } /*รหัสหลัก* / โมฆะสาธารณะ dopost (คำขอ httpservletrequest, การตอบสนอง httpservletResponse) พ่น servletexception, ioexception {สตริงข้อมูล = null; /*รับค่าอินพุต*/ string value1 = request.getParameter ("ชื่อ"); /*รับค่ารูปภาพ*/ httpsession session = request.getSession (); String value2 = (String) session.getAttribute ("CheckCode"); /*เปรียบเทียบค่าสองค่า (ตัวอักษรเป็นตัวพิมพ์ใหญ่)*/ if (value2.equalsignorecase (value1)) {info = "อินพุตรหัสการตรวจสอบที่ถูกต้อง"; } else {info = "ข้อผิดพลาดการป้อนข้อมูลรหัสการยืนยัน"; } system.out.println (ข้อมูล); request.setAttribute ("ข้อมูล", ข้อมูล); request.getRequestDispatcher ("/login.jsp"). forward (คำขอ, การตอบกลับ); } public void init () พ่น servletexception {// วางรหัสของคุณที่นี่}}4. แสดงอินเทอร์เฟซโครงสร้างอินพุต (ไม่ว่ารหัสการตรวจสอบอินพุตจะถูกต้อง):
<%@ page language = "java" import = "java.util.*" pageencoding = "utf-8"%> <%String Path = request.getContextPath (); String basepath = request.getScheme ()+": //"+"getServerName ()+": " "-// w3c // dtd html 4.01 transitional // en"> <html> <head> <base href = "<%= basepath%>"> <title> jsp 'login.jsp' ของฉัน content = "no-cache"> <meta http-equiv = "Expires" content = "0"> <meta http-equiv = "คำหลัก" content = "keyword1, keyword2, keyword3"> <meta http-equiv = "คำอธิบาย" href = "styles.css"> -> </head> <body> < %= request.getAttribute ("info") %> </body> </html>5. โครงสร้างโครงการและภาพหน้าจอเอฟเฟกต์:
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น