أعتقد أن الجميع على دراية برموز التحقق. سواء كنت تتقدم بطلب للحصول على حساب أو تسجيل الدخول في بعض الحالات ، سيُطلب منك إدخال رمز التحقق. بعد الإحصائيات ، يكون احتمال تمرير رمز التحقق بنجاح في التحقق 90 ٪ ، وهو ليس مرتفعًا. من المؤكد أن الكثير من الناس سوف يشككون في ضرورة هذا التصميم الذي يقلل من تجربة المستخدم ، لكن هيجل قال: كل ما هو معقول واقعي ؛ كل ما هو واقعي عقلاني. بعد ذلك ، دعنا نتعرف على رمز التحقق.
رمز التحقق هو برنامج تلقائي عام يميز ما إذا كان المستخدم هو كمبيوتر أو شخص. يتم استخدامه لمنع تكسير كلمة المرور الضارة ، وضرب التذاكر ، والفيضانات في المنتدى ، ومنع المتسللين من تسجيل الدخول باستمرار من خلال تكسير القوة الغاشمة. يتم استخدامه في البنوك والمجتمعات والمنتديات وأنظمة التصويت ، إلخ.
بدون مزيد من اللغط ، دعونا نلقي نظرة على الطرق الأربع التي أعرفها لتنفيذ رمز التحقق في Java.
الطريقة 1:
كانت الطريقة الأولى هي أول شيء فكرت فيه ، وكان أبسط منطق تنفيذ ، لكنه كان فعالًا وآمنًا للغاية.
العملية المحددة هي: 1. استخدم Photoshop لإنشاء صورة رمز التحقق. قد تحتوي الصورة المستطيلة على الحروف أو الأرقام الإنجليزية الضرورية أو الصينية (على النحو الوارد أعلاه)
2. عرض الصورة في Swing Control أو JSP صفحة
3. تطابق سلسلة رمز التحقق المقابلة لكل صورة في الرمز
4. عند التقديم ، احصل على السلسلة في مكون المكون أو النص وسلسلة كل صورة لمقارنتها باستخدام طريقة متساوية ().
العيب هو أن عملية صنع صور رمز التحقق تستغرق وقتًا طويلاً للغاية وأن طريقة التنفيذ منخفضة للغاية. يوصى بشدة بتنفيذه بهذه الطريقة. ستصبح الطريقة التالية أكثر كفاءة وجميلة وآمنة نسبيًا.
الطريقة 2:
هنا نتحدث عن Java Web وتنفيذ رمز التحقق ضمن Servlet ، ولا يزال المنطق واضحًا للغاية.
للتخلص من رمز التنفيذ الأكثر بساطة ، لنبدأ برمز المفتاح الأمامي:
عندما نضغط "لا يمكن رؤية بوضوح" ، سيتم تحديث صورة رمز التحقق ، وسيتم استدعاء وظيفة JS لإعادة ضبط مسار الصورة لاستبدال الصورة. يرجى الاطلاع على الرمز أدناه. في الكود ، <٪ = request.getContextPath () ٪> هو حل مشكلة المسارات النسبية ويمكن أن تعيد مسار الجذر للموقع. /servlet/imageservlet هو ككل ، يشير إلى servlet of Imageservlet. لماذا نحتاج إلى إضافة A /servlet من قبل؟ نظرًا لأننا قمنا بتخريب التكوين في web.xml ، يمكن فهمه على أنه تغيير اسم أطول. ثم انظر إلى وظيفة JS التالية. قد يكون لدى بعض الأشخاص أسئلة ، لماذا يحصلون على وقت حالي ويضيفونه إلى نهاية المسار؟ في الواقع ، هذا هو حل مشكلة ذاكرة التخزين المؤقت للمتصفح. هذه هي المشكلة التي تم تغيير صورة رمز التحقق بعد تشغيل PictureServlet ، لكن ذاكرة التخزين المؤقت لم تتغير. بمساعدة أوقات مختلفة في كل لحظة ، يمكن إبطال ذاكرة التخزين المؤقت للمتصفح.
<script type = "text/javaScript"> function reloadCode () {var time = new date (). getTime () ؛ document.getElementById ("ImageCode"). } </script>فيما يلي معلومات التكوين الرئيسية في web.xml:
<script type = "text/javaScript"> function reloadCode () {var time = new date (). getTime () ؛ document.getElementById ("ImageCode"). } </script>ثم دعونا نلقي نظرة على كيفية إنشاء key pictureservlet الصور:
<Sradlet> <Sradlet-Name> pictureservlet </rectlet-name> <Servlet-class> com.muke.imageservlet </servlet-class> </servlet> <vervlet> <Servlet-Name> loginservlet </servlet-name> <Servlet-class> com.muke.loginservlet <Sradlet-Name> pictureservlet </servlet-name> <url-pattern>/servlet/pictureservlet </url-pattern> </servlet-mapping> <stervlet-mapping> <Servlet-Name> loginservlet </radle-name> <url-pattern>/servlet/loginservlet </url-patern>
إذا كنت ترغب في وصف بشكل أكثر وضوحًا كيف يتم تنفيذ رمز التحقق هذا ، فإن كلمة واحدة فقط "رسم" تبدو مشابهة للطريقة الأولى ، ولا تزال منخفضة نسبيًا ، لكن كفاءة استخدام التعليمات البرمجية لتربيتها تلقائيًا "ترسم رمز التحقق بالتأكيد. دعونا نلقي نظرة على الكود أعلاه. أولاً ، يتم إنشاء كائن BufferEdImage BI. يستخدم BI لرسم صورة رمز التحقق. ثم ، باستخدام BI للحصول على فرشاة G ، واستخدام G لرسم الخلفية المستطيلة للكيان. بعد ذلك ، باستخدام منطق بسيط للاتصال بالطريقة شائعة الاستخدام () في Java لرسم أحرف رمز التحقق على المستطيل. في الوقت نفسه ، تتم إضافة السلسلة إلى كائن سلسلة متغير StringBuffer بالتسلسل ، وأخيراً تخزينها في جلسة كائن JSP المدمجة للمقارنة بعد إرسال رمز التحقق. لعرض رمز التحقق ، نحتاج أيضًا إلى كتابة صورة رمز التحقق التي تم إنشاؤها إلى دفق Imageio بتنسيق صورة معين.
كما يتضح من LoginServlet أدناه ، يمكنك مقارنة السلسلة في مربع إرسال رمز التحقق عن طريق الحصول على السلسلة التي تم تخزينها للتو في الصور. يمكنك تغيير الأوتار إلى أحرف صغيرة أو كبيرة لتجاهل الأحرف الكبيرة.
يمتد Public Class PictureServlet httpservlet {public void dogge (httpservletrequest request ، httpservletresponse) يلقي ioException {bufferedImage bi = new BufferedImage (،، bufferedimage.type_int_rgb) ؛ الرسومات g = bi.getGraphics () ؛ اللون C = لون جديد (، ،) ؛ G.SetColor (C) ؛ G.FillRect (، ،) ؛ char [] ch = "abcdefghijklmnopqrstuvwxyz". tochararray () ؛ عشوائي R = جديد عشوائي () ؛ int len = ch.length ، index ؛ StringBuffer SB = New StringBuffer () ؛ لـ (int i = ؛ i <؛ i ++) {index = r.nextint (len) ؛ G.SetColor (New Color (R.NextInt () ، R.NextInt () ، R.NextInt () ، R.NextInt ())) ؛ G.DrawString (ch [index]+"" ، (i*)+،) ؛ sb.append (ch [index]) ؛ } request.getSession (). setAttribute ("piccode" ، sb.toString ()) ؛ imageio.write (Bi ، "JPG" ، reponse.getOutputStream ()) ؛ }}هنا هي أسطورة التنفيذ:
ما سبق هو المعرفة ذات الصلة حول إنتاج رمز التحقق من Java الذي قدمه لك المحرر. آمل أن يكون ذلك مفيدًا لك! سأقدم لك إنتاج رمز التحقق من Java (الجزء 2). الأصدقاء المهتمين ، يرجى الانتباه إلى موقع wulin.com!