Kaptcha เป็นเครื่องมือสร้างรหัสการตรวจสอบที่ง่ายและใช้งานง่าย ผ่านการกำหนดค่าคุณสามารถกำหนดขนาดรหัสการตรวจสอบสีอักขระที่แสดง ฯลฯ ด้วยตัวคุณเอง มาพูดคุยเกี่ยวกับวิธีการใช้ Kaptcha เพื่อสร้างรหัสการตรวจสอบและแยกรหัสการตรวจสอบทางฝั่งเซิร์ฟเวอร์เพื่อตรวจสอบ
1. สร้างสภาพแวดล้อมการทดสอบ
1.1. สร้างโครงการทดสอบเว็บ
สร้างโครงการเว็บใหม่และสถานที่ Kaptcha-2.3.2.jar ในไดเรกทอรี Web-Inf/Lib ของโครงการดังแสดงในรูปด้านล่าง:
1.2. กำหนดค่า kaptchaservlet เพื่อสร้างรหัสการตรวจสอบในไฟล์ web.xml
การกำหนดค่าโดยละเอียดของ Kaptchaservlet มีดังนี้:
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <web-app version = "2.5" 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_2_2_2_2_2_2_2_2_ <welcome-file> index.jsp </welcome-file> </welcome-file-list> <!-การกำหนดค่ารหัสการตรวจสอบ Kaptcha-> <servlet> <!-การสร้างภาพรวม-> <servlet-name> kaptcha </servlet-name> <init-Param> <param-Name> kaptcha.border </param-name> <param-value> ไม่ </param-value> </init-param> <!-สีของตัวอักษร-> <init-Param> <param-name> kaptcha.textproducer.font.color </param-name -> <init-Param> <param-Name> kaptcha.image.width </param-name> <param-value> 135 </param-value> </init-param> <!-อักขระใดที่จะใช้ในการสร้างรหัสการตรวจสอบ-> <param-value> acdefhkprstwx345679 </param-value> </init-param> <!-ความสูงของภาพ-> <init-param> <param-name> kaptcha.image.height </param-name> <param-name> kaptcha.textproducer.font.size </param-name> <param-value> 43 </param-value> </init-param> <!-สีของบรรทัดสัญญาณรบกวน-> <int-param> <param-name> kaptcha.noise.color ของอักขระ-> <int-Param> <init-Param> <init-Param> <param-Name> kaptcha.noise.color </param-name> <param-value> สีดำ </param-value> </itrig-param> <!-จำนวนอักขระ-> <int-param> <param-value> 4 </param-value> </init-param> <!-แบบอักษรใดที่จะใช้-> <init-param> <param-name> kaptcha.textproducer.font.names </param-name> <param-value> Arial </param-value> <servlet-name> kaptcha </servlet-name> <url-pattern> /kaptcha.jpg </url-pattern> </servlet-mapping> </eb-app>
1.3. แสดงรหัสการตรวจสอบที่สร้างขึ้น
แสดงรหัสการยืนยันบน page index.jsp
<%@ page language = "java" pageencoding = "utf-8"%> <! doctype html> <html> <head> <title> แสดงรหัสการตรวจสอบที่สร้างโดย kaptchaservlet </title> <script type = "text/javascript" src = "$ {pageContext.request.contextpath} /js/jquery-1.9.1.js"> </script> <script type = "text/javascript"> // คลิกเพื่อสลับฟังก์ชั่นการตรวจสอบรหัส $ ("#yzmimg"). attr ("src", "kaptcha.jpg?"+math.floor (math.random ()*100)); } // ส่งฟังก์ชัน dosubmit () {var verifyCodeValue = $ ("#verifyCode"). val (); ถ้า (VerifyCodeValue.replace (// S/G, "") == "") {แจ้งเตือน ("โปรดป้อนรหัสการตรวจสอบ"); } else {// asynchronously ตรวจสอบว่ารหัสการตรวจสอบถูกป้อนอย่างถูกต้องหรือไม่ก่อนที่จะส่ง var verifyUrl = "$ {pageContext.request.contextpath}/servlet/verifyservlet? verifyCode ="+VerifyCodeValue; $ .ajax ({type: "get", url: verifyurl, ความสำเร็จ: ฟังก์ชั่น (returndata) {ถ้า (returndata! = "y") {แจ้งเตือน ("โปรดป้อนรหัสการตรวจสอบที่ถูกต้อง!");} else {// รหัสการตรวจสอบถูกต้อง - }} </script> </head> <body> <body> <form> <table> <tr> <td> โปรดป้อนรหัสการตรวจสอบ: </td> <td> <อินพุต type = "text" name = "VerifyCode" id = "VerifyCode"> <img SRC = "kaptcha.jpg pointer; "> <a href =" JavaScript: void (0) "onclick =" changeverifyCode () "> ไม่เห็นอย่างชัดเจนเปลี่ยนอีกอัน </a> </td> </tr> <tr> <td> </td> <td> </body> </html>เอฟเฟกต์การดำเนินการแสดงในรูปด้านล่าง:
1.4. ตรวจสอบรหัสการตรวจสอบที่ส่งทางฝั่งเซิร์ฟเวอร์
หลังจากผู้ใช้ส่งรหัสการยืนยันในแบบฟอร์มเราจะตรวจสอบทางฝั่งเซิร์ฟเวอร์และเขียน VerifyServlet ด้วยรหัสต่อไปนี้:
/***/แพ็คเกจ me.gacl.web.controller; นำเข้า java.io.ioexception; นำเข้า java.io.printwriter; นำเข้า javax.servlet.servletexception; นำเข้า Javax.servlet.http.httpservlet; javax.servlet.http.httpservletResponse; คลาสสาธารณะ Verifyservlet ขยาย httpservlet {โมฆะสาธารณะ doget (httpservletrequest Request, httpservletResponse การตอบสนอง) โยน charastexception; Response.Setheader ("Pragma", "No-cache"); Response.Setheader ("แคชควบคุม", "ไม่มีแคช"); printwriter out = null; ลอง {// การตอบสนองสตริงข้อมูล resultData; // รับสตริงการตรวจสอบรหัสผ่าน VerifyCode = request.getParameter ("VerifyCode"); System.out.println ("VerifyCode ----"+VerifyCode); if (verifyCode == "") {resultData = "n"; } else {// รับรหัสการตรวจสอบที่เก็บไว้ในสตริงเซสชัน kaptchavalue = (string) request.getSession (). getAttribute (com.google.code.kaptcha.constants.kaptcha_session_key); // เปรียบเทียบว่ารหัสการตรวจสอบที่ป้อนและรหัสการตรวจสอบที่สร้างขึ้นจริงนั้นเหมือนกันถ้า (kaptchavalue == null || kaptchavalue == "" ||! verifyCode.equalsignorecase (kaptchavalue)) {resultData = "n"; } else {resultData = "y"; }} out = response.getWriter (); out.write (resultData); out.flush (); } catch (exception e) {e.printstacktrace (); } ในที่สุด {ถ้า (ออก! = null) {out.close (); - ลงทะเบียน VerifyServlet ใน web.xml
<!-ตรวจสอบว่ารหัสการตรวจสอบถูกป้อนอย่างถูกต้อง-> <servlet> <servlet-name> verifyservlet </servlet-name> <servlet-lass> me.gacl.web.controller.verifyservlet </servlet-class> </servlet> <servlet-mapping> <url-pattern>/servlet/verifyservlet </url-pattern> </servlet-mapping>
ผลการดำเนินการมีดังนี้:
1. อย่าป้อนรหัสการยืนยัน
2. ป้อนรหัสการยืนยันที่ไม่ถูกต้อง
3. ป้อนรหัสการยืนยันที่ถูกต้อง
การใช้ Kaptcha เพื่อสร้างรหัสการตรวจสอบรู้สึกดีมันใช้งานง่ายและสะดวกมาก ฉันหวังว่าทุกคนจะเชี่ยวชาญได้