يشارك هذا المثال رمز التحقق الذي تم إنشاؤه عشوائيًا تم إنشاؤه بشكل عشوائي للرجوع إليه. المحتوى المحدد كما يلي
استيراد java.awt.color ؛ استيراد java.awt.font ؛ استيراد java.awt.graphics2d ؛ استيراد java.awt.image.bufferedimage ؛ استيراد java.io.ioException ؛ استيراد java.util.random ؛ javax.imageio javax.servlet.servletoutputstream ؛ استيراد javax.servlet.http.httpservlet ؛ استيراد javax.servlet.http.httpservletrequest {/ *** مُنشئ الكائن.*/ public randimage () {super () ؛ } private int imgwidth = 0 ؛ // عرض الصورة الخاص int imgheight = 0 ؛ // ارتفاع الصورة private int codeCount = 0 ؛ // عدد الأحرف في الصورة الخاصة int x = 0 ؛ خاص int fontheight ؛ // ارتفاع الخط الخاص بـ int codey ؛ سلسلة خاصة fontstyle. // نمط الخط // معرف التسلسل تجنب مكررة ثابتة طالبة طويلة المسلسل المسلسل = 128554012633034503L ؛ /*** معلمات تكوين التهيئة*/public void init () يلقي ServleTexception {// width Strwidth = "200" ؛ // ارتفاع سلسلة strheight = "80" ؛ // عدد الأحرف StrcodEcount = "5" ؛ // font fontstyle = "Times New Roman" ؛ // تحويل المعلومات التي تم تكوينها إلى محاولة عددية {if (strwidth! = null && strwidth.length ()! = 0) {imgwidth = integer.parseint (strwidth) ؛ } if (strheight! = null && strheight.length ()! = 0) {imgheight = integer.parseint (strheight) ؛ } if (strcodeCount! = null && strcodeCount.length ()! = 0) {codeCount = integer.parseint (strcodeCount) ؛ }} catch (numberFormatexception e) {E.PrintStackTrace () ؛ } x = imgwidth / (codeCount + 1) ؛ // تباعد الأحرف fontheight = imgheight - 2 ؛ // font height codey = imgheight - 12 ؛ // ارتفاع رمز} process processRequest المحمي (طلب httpservletrequest ، استجابة httpservletresponse) يلقي servletexception ، ioException {// دفق الإخراج set reponse.setContentType ("Image/JPEG") ؛ // format response.setheader ("pragma" ، "no-cache") ؛ // لا تجدد ذاكرة التخزين المؤقت. // لا تجديد ذاكرة التخزين المؤقت. // لا يوجد إبطال ذاكرة التخزين المؤقت أيضًا غير مخبأة في جلسة httpsession = request.getSession () ؛ // الحصول على جلسة الجلسة // إنشاء صورة في صورة الذاكرة bufferedImage = جديد bufferedImage (imgwidth ، imgheight ، bufferedimage.type_int_rgb) ؛ // الحصول على السياق الرسومي Graphics2d g = image.creategraphics () ؛ // إنشاء عشوائي عشوائي = جديد عشوائي () ؛ // فئة عشوائية // اضبط لون الخلفية للمستطيل G.SetColor (color.hite) ؛ // املأ المستطيل المستقيم إلى الأبيض G.FillRect (0 ، 0 ، imgwidth ، imgheight) ؛ // قم بتعيين خط الحدود G.SetFont (خط جديد (fontstyle ، font.plain + font.italic ، fontheight)) ؛ // اضبط اللون الحدودي G.SetColor (لون جديد (55 ، 55 ، 12)) ؛ // ارسم الحدود G.DrawRect (0 ، 0 ، imgwidth - 1 ، imgheight - 1) ؛ . لـ (int i = 0 ؛ i <160 ؛ i ++) {int x = random.nextint (imgwidth) ؛ int y = random.nextint (imgheight) ؛ int xl = random.nextint (12) ؛ int yl = random.nextint (12) ؛ G.Drawline (x ، y ، x + xl ، y + yl) ؛ } // خذ رمز المصادقة الذي تم إنشاؤه عشوائيًا (رقم 4 أرقام) سلسلة srand = "" ؛ int red = 0 ، الأخضر = 0 ، الأزرق = 0 ؛ لـ (int i = 0 ؛ i <codeCount ؛ i ++) {// تغيير لإنشاء أحرف عشوائية codeCount // القصص اللون الجديد من خلال RGB Three Red = random.nextint (255) ؛ الأخضر = random.nextint (255) ؛ Blue = Random.NextInt (255) ؛ // قصص للحصول على عدد من 0 1 2 int wordtype = random.nextint (3) ؛ // القصص للحصول على 3 أرقام بين 0-2 char retord = 0 ؛ . // احصل على استراحة char-type من 0-9 ؛ الحالة 1: retord = this.getLowerOrupperchar (0) ؛ // الحصول على استراحة من نوع char. الحالة 2: retord = this.getLowerOrupperchar (1) ؛ // الحصول على استراحة كبيرة من نوع char ؛ } srand += string.valueof (retord) ؛ // الحصول على الأحرف العشوائية التي تم الحصول عليها G.SetColor (لون جديد (أحمر ، أخضر ، أزرق)) ؛ // قم بتعيين لون g.drawString (string.valueof (retord) ، 2+ (i) * x ، codey) ؛ // اكتب الأحرف إلى الموضع المقابل في الصورة} // حفظ رمز المصادقة في الجلسة. // حفظ الأحرف العشوائية التي تم الحصول عليها في رد الجلسة ، ويمكنك الاتصال // الصورة تسري G.Dispose () ؛ // احرص على g object servleTOutputStream reviewOutPutStream = response.getOutputStream () ؛ // إخراج دفق // إخراج صورة إلى page imageio.write (صورة ، "jpeg" ، reponseOtutputStream) ؛ // الإخراج في تنسيق JPEG // أغلق دفق الإدخال أدناه! ResponseOutputStream.flush () ؛ // fresh وأغلق دفق الاستجابة oututputstream.close () ؛ } color getRandColor (int fc ، int bc) {// أعط لون عشوائي عشوائي = جديد عشوائي () ؛ إذا (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) ؛ } doget void المحمية (طلب httpservletrequest ، استجابة httpservletresponse) يلقي servleTexception ، ioException {processRequest (request ، response) ؛ } void dopost المحمية (طلب httpservletrequest ، استجابة httpservletresponse) يلقي servletexception ، ioException {processRequest (request ، response) ؛ } // تحويل رقم عشوائي عدد صحيح إلى char لإرجاع char الخاص getSingLenumberchar () {Random Random = new Random () ؛ int numberResult = random.nextint (10) ؛ int ret = numberResult + 48 ؛ // عند تحويل الحرف "0" إلى رمز ASCALL ، فهو 48 إرجاع (char) ret ؛ } // احصل على 26 حرفًا char getLowerOrupperChar (int ver) {Random Random = new Random () ؛ int numberResult = random.nextint (26) ؛ int ret = 0 ؛ if (apport == 0) {// lopcase ret = numberResult + 97 ؛ } آخر if (apper == 1) {// capital ret = numberResult + 65 ؛ } return (char) ret ؛ }} ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.