บทความนี้แชร์รหัสตัวอย่างที่สร้างโดยรหัสการตรวจสอบ Java สำหรับการอ้างอิงของคุณ เนื้อหาเฉพาะมีดังนี้
แพ็คเกจ com.gonvan.component.captcha; นำเข้า java.awt.*; นำเข้า java.awt.image.bufferedimage; นำเข้า java.io.ioexception; นำเข้า java.util.hashmap; นำเข้า java.util.map นำเข้า java.util.random; นำเข้า javax.imageio.imageio; นำเข้า Javax.servlet.servletoutputstream; นำเข้า Javax.servlet.http.httpservletrequest นำเข้า Javax.servlet.http.httpservletResponse; /*** สร้างโดย Yuerzm เมื่อปี 2016/3/14 */คลาสสาธารณะ captchafactory {ส่วนตัวคงที่ถ่านสุดท้าย [] code_sequence = "abcdefghijklmnopqrstuvwxyz0123456789" .tochararray (); int คงสุดท้ายคงที่ int default_width = 60; INT สุดท้ายคงที่ int default_Height = 20; ส่วนตัวคงที่ int default_code_len = 4; int คงสุดท้ายคงที่ int default_code_x = 13; INT คงที่ส่วนตัวคงที่ int default_Code_Y = 16; INT สุดท้ายคงที่ int default_font_size = 18; สตริงสุดท้ายคงที่ส่วนตัว default_font_family = "Times New Roman"; อินสแตนซ์ captchafactory ส่วนตัว = captchafactory ใหม่ (); ความกว้าง int ส่วนตัว = default_width; // กำหนดความกว้างของความสูงส่วนตัวความสูง = default_height; // กำหนดความสูงของความสูงความยาว int ความยาว = default_code_len; // กำหนดจำนวนรหัสการตรวจสอบที่แสดงบนรูปภาพส่วนตัว int xx = default_code_x; // กำหนดรหัสการตรวจสอบ x พิกัดส่วนตัว int yy = default_code_y; // กำหนดรหัสการตรวจสอบ y พิกัดที่แสดงบนภาพตัวอักษร INT ส่วนตัว = default_font_size; // กำหนดขนาดตัวอักษรของรหัสการตรวจสอบที่แสดงบนภาพสตริงส่วนตัว fontfamily = default_font_family; // กำหนดจำนวนรหัสการตรวจสอบที่แสดงบนภาพ private captchafactory () {} public captchafactory getInstance () {return instance; } / ** * กำหนดค่าความกว้างและความสูง * * @param w * @param h * @return * / public captchafactory configwidthandheight (int w, int h) {instance.width = w; Instance.height = H; อินสแตนซ์กลับ; } / ** * กำหนดค่าพิกัด * * @param x * @param y * @return * / public captchafactory configxy (int x, int y) {instance.xx = x; instance.yy = y; อินสแตนซ์กลับ; } / ** * กำหนดค่าขนาดตัวอักษร * * @param FontSize * @return * / Public CaptChafactory ConfigFontSize (Int FontSize) {Instance.FontSize = FontSize; อินสแตนซ์กลับ; } / ** * กำหนดค่าตัวอักษร * * @param fontfamily * @return * / public captchafactory configfontsize (สตริง fontfamily) {instance.fontfamily = fontfamily; อินสแตนซ์กลับ; } โมฆะสาธารณะเขียน (คำขอ httpservletrequest, การตอบสนอง httpservletResponse) พ่น IOException {// บันทึกรหัสการตรวจสอบสี่หลักในเซสชัน แผนที่ captcha = สร้าง (); string randomCode = (สตริง) captcha.get ("captchacode"); bufferedImage buffimg = (bufferedImage) captcha.get ("captchaimg"); httpsession session = request.getSession (); session.setAttribute ("รหัส", แบบสุ่ม); // การแคชรูปภาพเป็นสิ่งต้องห้าม Response.Setheader ("Pragma", "No-cache"); Response.Setheader ("แคชควบคุม", "ไม่มีแคช"); Response.setDateHeader ("หมดอายุ", 0); Response.SetContentType ("Image/JPEG"); // เอาต์พุตภาพไปยังสตรีมเอาต์พุต servlet servletOutputStream outputStream = response.getOutputStream (); imageio.write (buffimg, "jpeg", outputstream); outputstream.close (); } แผนที่สาธารณะ <String, Object> สร้าง () พ่น IOException {// กำหนดบัฟเฟอร์บัฟเฟอร์บัฟเฟอร์ buffimg = bufferedImage ใหม่ (ความกว้าง, ความสูง, bufferedImage.type_int_rgb); กราฟิก gd = buffimg.getGraphics (); // ตั้งค่าสีพื้นหลัง gd.setColor (getRandColor (200, 250)); gd.fillrect (0, 0, ความกว้าง, ความสูง); // ตั้งค่าตัวอักษรขนาดของตัวอักษรควรถูกกำหนดตามความสูงของภาพ gd.setFont (ฟอนต์ใหม่ (fontfamily, font.plain, fontsize)); // สร้างคลาสเครื่องกำเนิดตัวเลขแบบสุ่มสุ่มสุ่ม = new Random (); // สุ่มสร้าง 40 สายสัญญาณรบกวนทำให้รหัสการตรวจสอบในภาพมีโอกาสน้อยที่จะตรวจพบโดยโปรแกรมอื่น ๆ gd.setColor (getRandColor (160, 200)); สำหรับ (int i = 0; i <155; i ++) {int x = random.nextint (ความกว้าง); int y = random.nextint (ความสูง); int xl = random.nextint (12); int yl = random.nextint (12); gd.drawline (x, y, x + xl, y + yl); } // แบบสุ่มใช้เพื่อบันทึกรหัสการตรวจสอบที่สร้างขึ้นแบบสุ่มเพื่อให้ผู้ใช้สามารถตรวจสอบหลังจากเข้าสู่ระบบ StringBuffer randomCode = new StringBuffer (); int red = 0, green = 0, blue = 0; // สุ่มสร้างรหัสการตรวจสอบความยาว สำหรับ (int i = 0; i <length; i ++) {// รับหมายเลขรหัสการตรวจสอบที่สร้างขึ้นแบบสุ่ม String code = string.valueof (code_equence [random.nextint (36)]); // สร้างส่วนประกอบสีแบบสุ่มเพื่อสร้างค่าสีเพื่อให้ค่าสีของเอาต์พุตแต่ละหลักจะแตกต่างกัน red = random.nextint (110); Green = Random.nextint (110); Blue = Random.nextint (110); // วาดรหัสการตรวจสอบลงในภาพด้วยสีที่สร้างแบบสุ่ม gd.setColor (สีใหม่ (สีแดง + 20, สีเขียว + 20, สีน้ำเงิน + 20)); gd.DrawString (รหัส, i * xx + 6, yy); // รวมตัวเลขสุ่มที่สร้างเข้าด้วยกัน แบบสุ่มรหัส (รหัส); } แผนที่ <สตริงวัตถุ> retval = ใหม่ hashmap <> (); retval.put ("CaptChacode", แบบสุ่ม Code.ToString ()); retval.put ("captchaimg", buffimg); ผลตอบแทนผลตอบแทน; } / ** * รับสีแบบสุ่มให้ช่วง * * @param fc * min * @param bc * สูงสุด * @return color * / สีส่วนตัว getRandColor (int fc, int bc) {random random = new Random (); ถ้า (FC> 255) FC = 255; ถ้า (BC> 255) BC = 255; int r = fc + random.nextint (bc - fc); int g = fc + random.nextint (bc - fc); int b = fc + random.nextint (bc - fc); คืนสีใหม่ (R, G, B); -ข้างต้นเป็นเรื่องเกี่ยวกับบทความนี้ฉันหวังว่ามันจะเป็นประโยชน์กับการเรียนรู้ของทุกคน