ต้นกำเนิดของรหัสการยืนยัน
ในการพัฒนาโครงการเว็บเพื่อป้องกันไม่ให้บางคนใช้เครื่องมืออัตโนมัติ (เช่นเครื่องลงทะเบียนอัตโนมัติ) เพื่อประมวลผลข้อมูลแบทช์รหัสการตรวจสอบจะถูกเพิ่มเพื่อตรวจสอบในโหนดการทำงานที่แตกต่างกัน
แอปพลิเคชั่นคลาสสิกที่สุดคือ: รหัสการตรวจสอบกราฟิกการลงทะเบียนเว็บไซต์; ถัดไปผ่านเทคโนโลยี Java รวมกับ Servlet โปรแกรมรหัสตรวจสอบกราฟิกที่จำเป็นสำหรับการลงทะเบียนเว็บไซต์จะถูกนำไปใช้สำหรับการอ้างอิงของคุณ
2. ใช้เอฟเฟกต์รหัสการตรวจสอบกราฟิกของหน้าลงทะเบียน
1. สร้างโครงการเว็บ: java_servlet_verifyimg
2. สร้างคอนโทรลเลอร์ที่สร้างรหัสการตรวจสอบกราฟโดยอัตโนมัติ - VerifyImgServlet
แพ็คเกจ com.phome.util; นำเข้า java.awt.color; นำเข้า java.awt.font; นำเข้า java.awt.graphics2d; นำเข้า java.awt.image.bufferedimage; นำเข้า java.io.ioexception; นำเข้า Java.util.random; javax.servlet.servletoutputstream; นำเข้า Javax.servlet.http.httpservlet; นำเข้า Javax.servlet.http.httpservletrequest นำเข้า javax.servlet.http.httpservletresponse; com.sun.image.codec.jpeg.jpegimageencoder; Verifyimgservlet ระดับสาธารณะ // ตั้งค่าพจนานุกรมอักขระแบบสุ่ม 0, o, 1, i, ฯลฯ ฯลฯ public Static Final Char [] chars = {'2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', '', '', '', ' 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', '', '', '', ' 'x', 'y', 'z'}; สุ่มแบบคงที่สาธารณะแบบสุ่ม = ใหม่สุ่ม (); // ตัวเลขสุ่มวัตถุสตริงคงที่สาธารณะ getRandomString () {StringBuffer buffer = new StringBuffer (); // แคชสตริงสำหรับ (int i = 0; i <6; i ++) // หกลูปเพื่อรับอักขระ {buffer.append (chars [random.nextint (chars.length)]); // ใช้ตัวละครหนึ่งตัวแบบสุ่มในแต่ละครั้ง} return buffer.toString (); } สีสาธารณะคงที่ getRandomColor () {ส่งคืนสีใหม่ (random.nextint (255), random.nextint (255), random.nextint (255)); } สีสาธารณะคงที่ getReversecolor (สี C) {กลับสีใหม่ (255 - C.Getred (), 255 - C.GetGreen (), 255 - C.GetBlue ()); } สีสาธารณะคงที่ getReversecolor (สี C) {กลับสีใหม่ (255 - C.Getred (), 255 - C.GetGreen (), 255 - C.GetBlue ()); } โมฆะสาธารณะ DOGET (คำขอ httpservletRequest, การตอบสนอง httpservletResponse) พ่น servletexception, ioexception {response.setContentType ("image/jpeg"); // ตั้งค่าประเภทเอาต์พุตให้ไม่ละเว้นสตริง randomString = getRandomString (); // เรียกเมธอดเพื่อสร้างสตริงแบบสุ่มเพื่อรับและยอมรับคำขอสตริงแบบสุ่ม getSession (จริง) .setAttribute ("randomString", randomString); // เก็บสตริงในเซสชัน int width = 100; // ความกว้างของภาพความสูง int = 30; // สีความสูงของภาพสี = getRandomColor (); // รับสีแบบสุ่มสำหรับสีพื้นหลังสีย้อนกลับ = getReversecolor (สี); // กลับสีสำหรับบัฟเฟอร์สีเบื้องหน้า bi = bufferedImage ใหม่ (ความกว้าง, ความสูง, bufferedImage.type_int_rgb); // สร้างภาพสีกราฟิก 2d g = bi.createGraphics (); // รับวัตถุวาดภาพ g.setfont (ตัวอักษรใหม่ (font.sans_serif, font.bold, 16)); // ตั้งค่าตัวอักษร g.setColor (สี); // ตั้งค่าสี g.fillrect (0, 0, ความกว้าง, ความสูง); // วาดพื้นหลัง g.setColor (ย้อนกลับ); // ตั้งค่าสี G.DrawString (RandomString, 18, 20); // วาดอักขระสุ่มสำหรับ (int i = 0, n = random.nextint (100); i <n; i ++) // วาดสูงสุด 100 คะแนนเสียงรบกวน {g.drawRect (สุ่ม. nextint (ความกว้าง), สุ่ม. nextint (ความสูง), 1, 1); // จุดรบกวนแบบสุ่ม} servletoutputStream out = response.getOutputStream (); // ดูเหมือนว่าจะได้รับ umput jpegimageencoder encoder = jpegCodec.createJPegenCoder (out); // encoder encoder.encode (bi); // การเข้ารหัสภาพ out.flush (); // เอาท์พุทไปยังไคลเอนต์} โมฆะสาธารณะ dopost (คำขอ httpservletrequest, การตอบสนอง httpservletResponse) พ่น ServleTexception, ioexception {this.doget (คำขอ, การตอบสนอง); -3. สร้างคอนโทรลเลอร์ลงทะเบียน - RegistServlet
แพ็คเกจ com.phome.servlet; นำเข้า java.io.ioexception; นำเข้า Javax.servlet.servletexception; นำเข้า Javax.servlet.http.httpservlet; นำเข้า Javax.servlet.http.httpservletRequest; javax.servlet.http.httpservletResponse; นำเข้า Javax.servlet.http.httpsession;/** * ตัวควบคุมการลงทะเบียน * @author Zuoyi * */การลงทะเบียนระดับสาธารณะ @Override void doget (httpservletrequest req, httpservletResponse resp) พ่น servletexception, ioexception {this.dopost (req, resp); } @Override void dopost (httpservletrequest req, httpservletResponse resp) พ่น ServleTexception, ioexception {// รับรหัสการตรวจสอบแบบสุ่มลงทะเบียนจากเซสชัน httpsession session = req.getSession (); string randomString = (string) session.getAttribute ("randomString"); // รับสตริงการตรวจสอบการป้อนข้อมูลผู้ใช้ inputRandomString = req.getParameter ("RandomStr"); // ตรวจสอบให้แน่ใจว่ารหัสการตรวจสอบถูกส่งผ่านและลงทะเบียนมันจำลองถ้า (แบบสุ่มสแตรตคัล (inputRandomString)) {req.setAttribute ("resInfo", "ขอแสดงความยินดี! การลงทะเบียนสำเร็จ!"); } else {req.setAttribute ("resinfo", "รหัสการตรวจสอบถูกป้อนไม่ถูกต้องโปรดตรวจสอบและลงทะเบียนอีกครั้ง!"); } // หากการลงทะเบียนสำเร็จหรือล้มเหลวให้ข้ามไปที่หน้า result.jsp เพื่อดูผลการลงทะเบียน - - req.getRequestDispatcher ("result.jsp"). forward (req, resp); -4. กำหนดค่า servlet
<? 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 <play-name> simg </display-name> <!-กำหนดค่าการลงทะเบียนผู้ใช้ servlet-> <servlet> <servlet-name> Registservlet </servlet-name> <servlet-lass> com.phome.servlet.registservlet </servlet-class> </servlet> <url-pattern>/regist.action </url-pattern> </servlet-mapping> <!-กำหนดค่ารหัสการตรวจสอบกราฟ servlet-> <servlet> <servlet-name> verifyimg </servlet-name> <servlet-name> verifyimg </servlet-name> <url-pattern>/vershifyimg.action </url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file> index.html </welcome-file> <welcome-file> default.htm </welcome-file> <welcome-file> default.jsp </welcome-file> </welcome-file-list> </eb-app>
5. สร้างหน้าทดสอบมุมมองการลงทะเบียน - regist.jsp
<%@ page language = "java" import = "java.util.*" pageencoding = "GB18030"%> <%String Path = request.getContextPath (); String basepath = request.getScheme ()+"//" "-// w3c // dtd html 4.01 transitional // en"> <html> <head> <base href = "<%= basepath%>" rel = "nofollow ภายนอก" rel = "external nofollow"> <title> jsp 'index.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" rel = "nofollow ภายนอก" rel = "nofollow ภายนอก"> -> </head> <body> <form action = "$ {pageContext.request.context.context} name = "รหัสผ่าน"/> <br/> โปรดป้อนรหัสการตรวจสอบเพื่อลงทะเบียน: <img src = "$ {pageContext.request.contextpath} /verifyimg.action"/> <อินพุต type = "text" name = "bodyStr"/> <br/> < 5.1 สร้างหน้าผลลัพธ์การลงทะเบียน - result.jsp
<%@ page language = "java" import = "java.util.*" pageencoding = "GB18030"%> <%String Path = request.getContextPath (); String basepath = request.getScheme ()+"//" "-// w3c // dtd html 4.01 transitional // en"> <html> <head> <base href = "<%= basepath%>" rel = "nofollow ภายนอก" rel = "external nofollow"> <title> jsp 'index.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" rel = "nofollow ภายนอก" rel = "nofollow ภายนอก"> -> </head> <body> $ {requestscope.resinfo} </body> </html>6. ทดสอบ
(1) เปิดเบราว์เซอร์และป้อนที่อยู่ทดสอบ: http: // localhost: 8080/java_servlet_verifyimg; หน้าแสดงในรูปด้านล่างจะปรากฏขึ้น
ข. ป้อนบัญชีการลงทะเบียนรหัสผ่านและรหัสการยืนยันและคลิกรีจิสต์เพื่อส่ง
ค. ผลการทดสอบข้ามไปที่หน้าการลงทะเบียนการโอนโดยแจ้งว่าการลงทะเบียนจะสำเร็จ
(2) เปิดหน้าการลงทะเบียน
ป้อนรหัสการลงทะเบียนข้อผิดพลาด
หน้าผลการทดสอบ
เกิน!
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น