تشارك هذه المقالة رمز المثال الذي تم إنشاؤه بواسطة رمز التحقق من Java للرجوع إليه. المحتوى المحدد كما يلي
حزمة com.gonvan.component.captcha ؛ استيراد java.awt استيراد javax.imageio.imageio ؛ استيراد javax.servlet.servletoutputstream ؛ import javax.servlet.http.httpservletrequest ؛ import javax.servlet.http.httpservletresponse ؛ /*** تم إنشاؤه بواسطة Yuerzm في 2016/3/14. */الفئة العامة captchafactory {private static final char [] code_sequence = "abcdefghijklmnopqrstuvwxyz0123456789". tochararray () ؛ int static int default_width = 60 ؛ خاص ثابت نهائي int default_height = 20 ؛ int static int default_code_len = 4 ؛ خاص ثابت نهائي int default_code_x = 13 ؛ int static int default_code_y = 16 ؛ int static int int default_font_size = 18 ؛ Static Final String Default_font_family = "Times New Roman" ؛ مثيل CaptChafactory ثابت خاص = captchafactory جديد () ؛ عرض int الخاص = default_width ؛ // تحديد العرض الخاص بـ Width private int = default_height ؛ // تحديد الطول الخاص بالارتفاع int = default_code_len ؛ // تحديد عدد رموز التحقق المعروضة على الصورة الخاصة int xx = default_code_x ؛ // تحديد رمز التحقق x تنسيق int yy = default_code_y ؛ // تحديد كود التحقق من إحداثيات Y المعروضة على الصورة الخاصة int fontsize = default_font_size ؛ // تحديد حجم الخط لرمز التحقق المعروض على الصورة الخاصة بالسلسلة الخاصة = default_font_family ؛ // تحديد عدد رمز التحقق المعروض على الصورة الخاصة captchafactory () {} public static captchafactory getInstance () {return مثيل ؛ } / ** * تكوين العرض والارتفاع * * param w * param h * return * / public captchafactory configwidthandheight (int w ، int h) {easty.width = w ؛ مثيل. HEight = H ؛ مثيل العودة ؛ } / ** * تكوين الإحداثيات * * param x * param y * @return * / public captchafactory configxy (int x ، int y) {stiety.xx = x ؛ مثيل. yy = y ؛ مثيل العودة ؛ } / ** * تكوين حجم الخط * * param fontsize * @return * / public captChafActory configfontsize (int fontsize) {مثيل. مثيل العودة ؛ } / ** * تكوين الخط * * param fontfamily * return * / public captchafactory configfontsize (String fontfamily) {easty.fontfamily = fontfamily ؛ مثيل العودة ؛ } public void write (httpservletrequest request ، httpservletresponse) يرمي ioException {// حفظ رمز التحقق المكون من أربعة أرقام إلى الجلسة. MAP CAPTCHA = cender () ؛ String RandomCode = (String) captcha.get ("captchacode") ؛ BufferedImage Buffimg = (BufferedImage) captcha.get ("captchaimg") ؛ جلسة httpsession = request.getSession () ؛ Session.setAttribute ("Code" ، RandomCode) ؛ // محظور التخزين المؤقت للصور. استجابة. استجابة. استجابة. استجابة. // إخراج الصورة إلى دفق إخراج servlet. servleToutPutStream outputStream = response.getOutputStream () ؛ imageio.write (buffimg ، "jpeg" ، outputStream) ؛ outputStream.Close () ؛ } الخريطة العامة <string ، object> إنشاء () يلقي ioException {// تحديد الصورة bufferedimage buffimg = new BufferedImage (العرض ، الارتفاع ، bufferedImage.type_int_rgb) ؛ الرسومات gd = buffimg.getGraphics () ؛ // قم بتعيين لون الخلفية gd.setColor (getRandColor (200 ، 250)) ؛ gd.fillRect (0 ، 0 ، العرض ، الارتفاع) ؛ // اضبط الخط ، يجب تحديد حجم الخط وفقًا لارتفاع الصورة. gd.setfont (خط جديد (fontfamily ، font.plain ، fontsize)) ؛ // إنشاء فئة من أرقام العشر عشوائي عشوائي = جديد عشوائي () ؛ // Random يولد 40 خطًا تداخلًا ، مما يجعل رمز المصادقة في الصورة أقل عرضة للكشف عن البرامج الأخرى. gd.setColor (getRandColor (160 ، 200)) ؛ لـ (int i = 0 ؛ i <155 ؛ i ++) {int x = random.nextint (width) ؛ int y = random.nextint (الارتفاع) ؛ int xl = random.nextint (12) ؛ int yl = random.nextint (12) ؛ gd.drawline (x ، y ، x + xl ، y + yl) ؛ } // يتم استخدام RandomCode لحفظ رموز التحقق التي تم إنشاؤها عشوائيًا بحيث يمكن للمستخدمين التحقق منها بعد تسجيل الدخول. StringBuffer RandomCode = جديد StringBuffer () ؛ int red = 0 ، الأخضر = 0 ، الأزرق = 0 ؛ // توليد رموز التحقق بشكل عشوائي. لـ (int i = 0 ؛ i <length ؛ i ++) {// احصل على رقم رمز التحقق الذي تم إنشاؤه عشوائيًا. رمز السلسلة = string.valueof (code_sequence [random.nextint (36)]) ؛ // إنشاء مكونات ألوان عشوائية لإنشاء قيمة اللون ، بحيث تكون قيمة لون كل إخراج رقم مختلفة. أحمر = عشوائي. nextint (110) ؛ الأخضر = random.nextint (110) ؛ Blue = Random.NextInt (110) ؛ // ارسم رمز التحقق في الصورة باللون الذي تم إنشاؤه عشوائيًا. GD.SetColor (لون جديد (أحمر + 20 ، أخضر + 20 ، أزرق + 20)) ؛ gd.drawString (رمز ، i * xx + 6 ، yy) ؛ // الجمع بين الأرقام العشوائية التي تم إنشاؤها معًا. RandomCode.Append (رمز) ؛ } الخريطة <string ، object> retval = new hashmap <> () ؛ retval.put ("captchacode" ، randomcode.toString ()) ؛ retval.put ("captchaimg" ، buffimg) ؛ العودة } / ** * احصل على لون عشوائي مع إعطاء نطاق * * param fc * min * param bc * maximum * return color * / private color getRandColor (int fc ، int bc) {random random = new random () ؛ إذا (fc> 255) fc = 255 ؛ إذا (BC> 255) قبل الميلاد = 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) ؛ }}ما سبق هو كل شيء عن هذا المقال ، آمل أن يكون مفيدًا لتعلم الجميع.