1. مقدمة
يمكن القول أن رموز التحقق شائعة جدًا في حياتنا. أي موقع ويب أو أي تطبيق سيكون له هذه الوظيفة ، ولكن لماذا تحتاج إلى هذا؟ كيف تفعل ذلك؟ أدناه ، سيقود المحرر الجميع إلى استخدام Java لإكمال وظيفة رمز التحقق.
2. وظيفة رمز التحقق
بشكل عام ، يمكن أن يمنع الأشخاص من استخدام الروبوتات للتسجيل تلقائيًا على دفعات وتسجيل الدخول بشكل مستمر إلى مستخدمين محددين محددين باستخدام برامج محددة لطرق التكسير الغاشمة. نظرًا لأن رمز التحقق هو صورة تمزج الأرقام والرموز ، يبدو من الصعب على العين البشرية التعرف عليها ، ومن الصعب على الجهاز التعرف عليه.
3. تنفيذ جافا
3.1 إنشاء فئة servlet لرمز التحقق:
package com.bjpowernode.drp.util.servlet ؛ import java.awt.color ؛ import java.awt.font ؛ import java.awt.graphics ؛ import java.awt.image.bufferedimage ؛ import java.ioexception ؛ import java.util. javax.servlet.servletexception ؛ استيراد javax.servlet.http.httpservlet ؛ استيراد javax.servlet.http.httpservletrequest ؛ استيراد javax.servlet.http.httpservletresponse ؛ ares * */class public class upermage يمتد httpservlet {private static final string content_type = "text/html ؛ charset = gb2312" ؛ // قم بتعيين حجم الحروف ، وحجم الخط الخاص mfont = خط جديد ("Times New Roman" ، font.plain ، 17) ؛ public void init () يلقي servleTexception {super.init () ؛ } 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) ؛ int b = fc+random.nextint (bc-fc) ؛ إرجاع اللون الجديد (R ، G ، B) ؛ } خدمة void العامة (طلب httpservletrequest ، استجابة httpservletresponse) يلقي servletexception ، ioException {desponse.setheader ("pragma" ، "no-cache") ؛ استجابة. استجابة. // تشير إلى أن الاستجابة التي تم إنشاؤها هي استجابة الصورة. عرض int = 100 ، الارتفاع = 18 ؛ صورة bufferedImage = جديد bufferedImage (العرض ، الارتفاع ، bufferedImage.type_int_rgb) ؛ الرسومات g = image.getGraphics () ؛ عشوائي عشوائي = جديد عشوائي () ؛ G.SetColor (GetRandColor (200،250)) ؛ G.FillRect (1 ، 1 ، العرض -1 ، الارتفاع 1) ؛ G.SetColor (لون جديد (102،102،102)) ؛ G.DrawRect (0 ، 0 ، العرض -1 ، الارتفاع 1) ؛ G.SetFont (Mfont) ؛ G.SetColor (GetRandColor (160،200)) ؛ // ارسم خطًا عشوائيًا لـ (int i = 0 ؛ i <155 ؛ i ++) {int x = random.nextint (width - 1) ؛ int y = random.nextint (الارتفاع - 1) ؛ int xl = random.nextint (6) + 1 ؛ int yl = random.nextint (12) + 1 ؛ G.Drawline (x ، y ، x + xl ، y + yl) ؛ } // ارسم خطًا عشوائيًا من الاتجاه الآخر لـ (int i = 0 ؛ i <70 ؛ i ++) {int x = random.nextint (width - 1) ؛ int y = random.nextint (الارتفاع - 1) ؛ int xl = random.nextint (12) + 1 ؛ int yl = random.nextint (6) + 1 ؛ G.Drawline (x ، y ، x - xl ، y - yl) ؛ } // إنشاء أرقام عشوائية وتحويل أرقام عشوائية إلى خطابات Srand = "" ؛ لـ (int i = 0 ؛ i <6 ؛ i ++) {int itmp = random.nextint (26)+65 ؛ char ctmp = (char) itmp ؛ srand += string.valueof (CTMP) ؛ G.SetColor (لون جديد (20+Random.NextInt (110) ، 20+Random.NextInt (110) ، 20+Random.Nextint (110))) ؛ G.DrawString (string.valueof (CTMP) ، 15*i+10،16) ؛ } جلسة httpsession = request.getSession (true) ؛ Session.setAttribute ("Rand" ، Srand) ؛ G.Dispose () ؛ imageio.write (Image ، "JPEG" ، response.getOutputStream ()) ؛ } تدمير الفراغ العام () {}}3.2 تكوين servlet في web.xml ضمن ملف ويب-إنف
// servlet اسم وموقع <Vervlet> <Sradlet-Name> AuthImage </servlet-name> <Servlet-Class> com.bjpowernode.drp.util.servlet.authimage </rectlet-class> </radlet> // servlet يعمل على تلك mappings <ervlet-mapping> <Url-pattern>/servlet/login/authimage </url-pattern> </revlet-mapping>
3.3 مكالمات مكتب الاستقبال Servlet
رمز JSP:
<img id = "img" style = "cursor: pointer ؛" src = "$ {pagecontext.request.contextpath}/servlet/login/authimage" onClick = "changeimg ()">JS:
// انقر فوق رمز التحقق لتغيير وظيفة الصورة changeimg () {var img = document.getElementById ("img") ؛ img.src = "$ {pagecontext.request.contextpath}/servlet/login/authimage؟ d ="+math.random () ؛ العودة خطأ ؛}4. ملخص
من خلال هذا التعلم من رمز التحقق ، اكتسبت أيضًا فهمًا معينًا للتفاعل بين Servlet بالكامل والرمز الأمامي ، وقد تم أيضًا تحسين نقل البيانات بشكل كبير. لذلك ، ما زلت بحاجة لمعرفة المزيد عن هذه المهارات وتلخيصها في المستقبل. فقط بهذه الطريقة يمكن أن تكون المعرفة صلبة.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.