สร้างรหัสการตรวจสอบ Java ด้วยตนเองเนื้อหาเฉพาะมีดังนี้
องค์ประกอบของรหัสการตรวจสอบเว็บแอปพลิเคชัน:
(1) กล่องอินพุต
(2) รูปภาพแสดงรหัสการยืนยัน
กระบวนการสร้างรหัสการตรวจสอบ:
คอนเทนเนอร์ที่สร้างรหัสการยืนยันใช้ servlet ของ J2EE
คลาสที่จำเป็นในการสร้างภาพ:
(1) บัฟเฟอร์ข้อมูลภาพ bufferedImage
(2) ภาพวาดกราฟิก
(3) สีได้รับสี
(4) การสุ่มสร้างตัวเลขสุ่ม
(5) รูปภาพอินพุต Imageio
กระบวนการดำเนินการเฉพาะ:
(1) กำหนด servlet เพื่อสร้างรหัสการตรวจสอบ
(2) กำหนดวัตถุ bufferedImage ฟังก์ชั่นหลักคือการสร้างบัฟเฟอร์ภาพเป็นคอนเทนเนอร์ชั่วคราวสำหรับภาพ
(3) รับวัตถุกราฟิก "พื้นหลัง" ของภาพวาดและเข้าใจว่าเป็น "ผืนผ้าใบ"
(4) สร้างตัวเลขสุ่มผ่านการสุ่มเพื่อสร้างข้อมูลการตรวจสอบ
(5) ผ่านการดำเนินการกราฟิกวาดภาพวาดเฉพาะ
(6) ข้อมูลจะถูกเก็บไว้ในเซสชัน
(7) ใช้ Imageio เพื่อส่งออกภาพที่สร้างขึ้นและส่งผ่านภาพไปยังเบื้องหน้าโดยการตั้งค่าพารามิเตอร์ OUT ในวิธีการเขียน () ของ Imageio, Response.getOutputStream ()
(8) สร้าง servlet สำหรับการตรวจสอบและแยกข้อมูลในเซสชันสำหรับการตรวจสอบ (ใช้วิธี Ajax asynchronous ที่นี่)
การใช้งานรหัสเฉพาะ (ตัวอย่างรหัสการยืนยันด้านเว็บ)
<html> <head> <meta http-equiv = "content-type" content = "text/html; charset = utf-8"> <title> รหัสการตรวจสอบ Java </title> <script src = "https://apps.bdimg.com/libs/jquery/2.1. การตรวจสอบรหัสอินพุต: <อินพุต type = "text" name = "checkCode"> <img id = "codeimg" src = "imageservlet"> <a href = "javascript: reloadCode ();"> ไม่เห็นชัดเจน? </a> <br/> <อินพุต type = "ส่ง" value = "ส่ง"> <div id = "info" style = "สี: สีแดง"> </div> <script type = "text/javascript"> $ (function () {// ajax asynchronously รหัสการตรวจสอบ {"รหัส": $ ("อินพุต [name = checkCode]"). val ()}, ฟังก์ชั่น (ข้อมูล, textstatus) {console.log (textstatus); วันที่ (). getTime (); // สร้างเวลาที่แตกต่างกัน $ ("#codeimg"). attr ("src", "imageservlet? time ="+เวลา); // คำขอ re-} </script> </body> </html>คลาส Imageservlet (ส่วนการสร้างรหัสการตรวจสอบ)
@WebServlet ("/icageServlet") ภาพระดับสาธารณะภาพขยาย HTTPSERVLET {ส่วนตัวคงที่สุดท้าย Long SerialVersionUID = 1L; / ** * @See httpservlet#httpservlet () */ public imageservlet () {super (); // todo toDo ที่สร้างขึ้นอัตโนมัติ stub}/ ** * @see httpservlet#doget (คำขอ httpservletrequest, การตอบสนอง httpservletResponse) */ void doget ที่ได้รับการป้องกัน bimg = bufferedimage ใหม่ (68, 22, bufferedimage.type_int_rgb); กราฟิก g = bimg.getGraphics (); สีสี = สีใหม่ (200,151,255); // การสร้างสี G.SetColor (สี); G.FillRect (0, 0, 68, 22); char [] ch = "abcdefghghjiklmnopqrstuvwxyz0123456789" .tochararray (); // รับอาร์เรย์ที่มีตัวอักษรและตัวเลขจากนั้นสุ่มให้ตัวละครจากการสุ่มสุ่ม = ใหม่สุ่ม (); // สร้างหมายเลขสุ่ม int len = ch.length, ดัชนี; StringBuffer sbuffer = new StringBuffer (); // loop สร้าง 4 ตัวอักษรแบบสุ่มสำหรับ (int i = 0; i <4; i ++) {index = random.nextint (len); // สร้างตัวอักษรแบบสุ่มและหมายเลข g.setColor (สีใหม่ (สุ่ม. 18); sbuffer.append (ch [index]); // ใส่อักขระที่ได้รับแบบสุ่มในชุดบัฟเฟอร์}} getSession (). setAttribute ("newCode", sbuffer.toString ()); // บันทึกในเซสชันสำหรับการตรวจสอบที่ตามมา / ** * @see httpservlet#dopost (คำขอ httpservletrequest, การตอบสนอง httpservletresponse) * / การป้องกันโมฆะ dopost (httpservletrequest คำขอ, httpservletresponse การตอบสนอง) -CheckCode (Servlet การตรวจสอบรหัสการตรวจสอบ)
@WebServlet ("/CheckCode") การตรวจสอบคลาสสาธารณะขยาย HTTPSERVLET {ส่วนตัวคงที่สุดท้าย Long SerialVersionUID = 1L; / ** * @See httpservlet#httpservlet () */ public checkcode () {super (); // todo toDo ที่สร้างขึ้นอัตโนมัติ stub}/ ** * @see httpservlet#doGet (คำขอ httpservletrequest, การตอบสนอง httpservletResponse) */ void doget ที่ได้รับการป้องกัน Response.Setcharacterencoding ("UTF-8"); String code = request.getParameter ("รหัส"). touppercase (); // รับรหัสการตรวจสอบและดำเนินการสตริงการแปลงกรณี = null; if (request.getSession (). getAttribute ("newCode"). เท่ากับ (รหัส)) {result = "การตรวจสอบสำเร็จ!"; Response.getWriter (). ภาคผนวก (ผลลัพธ์); } else {result = "ข้อผิดพลาดรหัสยืนยัน!"; Response.getWriter (). ภาคผนวก (ผลลัพธ์); }} / ** * @See httpservlet#dopost (คำขอ httpservletrequest, การตอบสนอง httpservletResponse) * / การป้องกันโมฆะ dopost (httpservletrequest คำขอ, httpservletResponse การตอบสนอง) -ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น