أصل رمز التحقق
في تطوير مشروع الويب ، من أجل منع بعض الأشخاص من استخدام الأدوات التلقائية (مثل آلات التسجيل التلقائية) لمعالجة بيانات الدُفعات ، تتم إضافة رموز التحقق للتحقق في العقد الوظيفية المختلفة لتحقيق تأثير حظر البرنامج التلقائي
أكثر التطبيقات الكلاسيكية هي: رمز التحقق من رسومات تسجيل الموقع ؛ بعد ذلك ، من خلال تقنية Java ، جنبًا إلى جنب مع Servlet ، يتم تنفيذ برنامج رمز التحقق من الرسوم المطلوبة لتسجيل موقع الويب ، للرجوع إليه.
2. قم بتنفيذ تأثير رمز التحقق من الرسوم على صفحة التسجيل
1. إنشاء مشروع ويب: Java_servlet_verifyimg
2. قم بإنشاء وحدة تحكم تقوم تلقائيًا بإنشاء رموز التحقق من الرسم البياني - VerifyImgServlet
package com.phome.util ؛ import java.awt.color ؛ import java.awt.font ؛ import java.awt.graphics2d ؛ import java.awt.image.bufferedimage ؛ import java.ioexception ؛ import java.util.random ؛ import javax.servlet javax.servlet.servletoutputstream ؛ استيراد javax.servlet.http.httpservlet ؛ استيراد javax.servlet.http.htpservletrequest com.sun.image.codec.jpeg.jpegimageencoder ؛ الطبقة العامة VerifyImgServlet يمتد httpservlet { / ** * * / private static final serialversionuid = 1l ؛ // تعيين قاموس حرف عشوائي. 0 ، O ، 1 ، i ، إلخ. 's' ، 't' ، 'u' ، 'v' ، 'w' ، 'x' ، 'y' ، 'z' ، 'a' ، 'b' ، 'c' ، 'd' ، 'e' ، 'f' ، 'g' ، 'h' ، 'h' ، u '، u' ، u '، u' ، u '، u' ، u '، 'x' ، 'y' ، 'z'} ؛ عشوائي ثابت عشوائي = جديد عشوائي () ؛ // كائن رقم عشوائي سلسلة ثابتة getRandomString () {StringBuffer Buffer = جديد StringBuffer () ؛ // string cache لـ (int i = 0 ؛ i <6 ؛ i ++) // ست حلقات للحصول على أحرف {buffer.append (chars [random.nextint (chars.length)]) ؛ // خذ حرف واحد بشكل عشوائي في وقت واحد} إرجاع buffer.toString () ؛ } color getRandomColor () {return new color (random.nextint (255) ، random.nextint (255) ، random.nextint (255)) ؛ } color getReversecolor (color c) {return new color (255 - c.getred () ، 255 - c.getgreen () ، 255 - c.getBlue ()) ؛ } color getReversecolor (color c) {return new color (255 - c.getred () ، 255 - c.getgreen () ، 255 - c.getBlue ()) ؛ } DOGED void public (طلب httpservletrequest ، استجابة httpservletresponse) يلقي servletexception ، ioException {reponse.setContentType ("Image/JPEG") ؛ // قم بتعيين نوع الإخراج لعدم حذف String RandomString = getRandomString () ؛ // استدعاء الطريقة لإنشاء سلسلة عشوائية للحصول على وقبول request.getSession (true). // قم بتخزين السلسلة في عرض الجلسة int = 100 ؛ // عرض الصورة ارتفاع = 30 ؛ // ألوان ارتفاع الصورة = getRandomColor () ؛ // احصل على لون عشوائي لألوان الخلفية العكسية = getReversecolor (اللون) ؛ // invert color for prounground bufferedimage bi = new BufferedImage (العرض ، الارتفاع ، bufferedImage.type_int_rgb) ؛ // إنشاء صورة ملونة Graphics2d g = bi.creategraphics () ؛ // احصل على كائن الرسم G.SetFont (خط جديد (font.sans_serif ، font.bold ، 16)) ؛ // set font g.setColor (color) ؛ // set color g.fillRect (0 ، 0 ، width ، leight) ؛ // ارسم الخلفية G.SetColor (عكس) ؛ // اضبط اللون G.DrawString (RandomString ، 18 ، 20) ؛ // ارسم أحرفًا عشوائية لـ (int i = 0 ، n = random.nextint (100) ؛ i <n ؛ i ++) // ارسم ما يصل إلى 100 نقطة ضوضاء {g.drawRect (random.nextint (العرض) ، random.nextint (الارتفاع) ، 1 ، 1) ؛ // نقاط ضوضاء عشوائية} servleTOutputStream Out = response.getOutputStream () ؛ // يبدو أنه يحصل على دفق الإخراج jpegimageencoder encoder = jpegcodec.createjpegencoder (Out) ؛ // Encoder Encoder.encode (BI) ؛ // ترميز الصورة Out.flush () ؛ // الإخراج إلى العميل} public void dopost (طلب httpservletrequest ، استجابة httpservletresponse) يلقي servleTexception ، ioException {this.doget (request ، response) ؛ }}3. إنشاء وحدة تحكم التسجيل - Registservlet
package com.phome.servlet ؛ import java.io.ioException ؛ import javax.servlet.servletexception ؛ import javax.servlet.http.httpservlet ؛ import javax.servlet.http.httpservletrequest javax.servlet.http.httpservletresponse ؛ import javax.servlet.http.httpsession ؛/** * registration controller * @author zuoyi * */registervlet الطبقة العامة Override محمية void doget (httpservletrequest req ، httpservletresponse resp) يلقي servletexception ، ioException {this.dopost (req ، resp) ؛ } override void dopost (httpservletrequest req ، httpservletresponse resp) يلقي servletexception ، ioException {// احصل على رمز التحقق العشوائي للتسجيل من جلسة httpsession session = req.getessession () ؛ String RandomString = (string) session.getAttribute ("RandomString") ؛ // احصل على رمز التحقق من إدخال المستخدم inputRandomString = req.getParameter ("Randomstr") ؛ // تأكد من تمرير رمز التحقق ، وتسجيله محاكاة إذا كان (randomstring.equals (inputRandomString)) {req.setattribute ("Resinfo" ، "التهاني! التسجيل كان ناجحًا!") ؛ } آخر {req.setattribute ("Resinfo" ، "يتم إدخال رمز التحقق بشكل غير صحيح ، يرجى التحقق والتسجيل مرة أخرى!") ؛ } // إذا كان التسجيل ناجحًا أو فشلًا ، فانتقل إلى صفحة result.jsp لعرض نتائج التسجيل. . . req.getRequestDispatcher ("result.jsp"). إلى الأمام (req ، resp) ؛ }}4. تكوين servlet
<؟ XSI: schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xd <Spishose-name> simg </isplay-name> <!-تكوين servlet تسجيل المستخدم-> <Servlet> <Sradlet-Name> RegiStervlet </servlet-name> <Url-pattern>/regist.action </url-pattern> </stervlet mapping> <!-تكوين رمز التحقق من الرسم البياني servlet-> <vervlet> <Servlet-name> <Srevlet-Name> VerifyImg </servlet-name> <url-pattern>/virefyimg.action </url-pattern> </servlet mapping> <list-file-list> <lispile> index.html </selp-file> <lispile> index.htm </selpile-file> <ishly-file> default.html </iship-file> <lisp-file> default.htm </iswith-file> <self-file> default.jsp </iship-file> </self-file-list> </web-app>
5. إنشاء صفحة اختبار عرض التسجيل - Regist.jsp
<٪@ page language = "java" import = "java.util.*" pageencoding = "gb18030" ٪> <٪ string path = requestContextPath () ؛ string basepath = request.getscheme ()+": //" request.getServerName ()+ "-// w3c // dtd html 4.01 transitional // en"> <html> <head> <base href = "<٪ = basepath ٪>" rel = "external nofloll" http-equiv = "cache-control" content = "no-cache"> <meta http-equiv = "Expires" content = "0"> <meta http-equiv = "keywords" content = "keyword1 ، keyword2 ، keyword3"> <meta http-equiv = "description" content = type = "text/css" href = "styles.css" rel = "خارجي nofollow" rel = "خارجي nofollow"> -> </head> <body> <form action = "$ {pagecontext.request.contextpath}/action.action type = "text" name = "password"/> <br/> الرجاء إدخال رمز التحقق للتسجيل: <img src = "$ {pagecontext.request.contextpath}/verifyimg.action"/> <input type = "text" name = "randomstr"/> <br/> 5.1 إنشاء صفحة نتيجة تسجيل - result.jsp
<٪@ page language = "java" import = "java.util.*" pageencoding = "gb18030" ٪> <٪ string path = requestContextPath () ؛ string basepath = request.getscheme ()+": //" request.getServerName ()+ "-// w3c // dtd html 4.01 transitional // en"> <html> <head> <base href = "<٪ = basepath ٪>" rel = "external nofloll" http-equiv = "cache-control" content = "no-cache"> <meta http-equiv = "Expires" content = "0"> <meta http-equiv = "keywords" content = "keyword1 ، keyword2 ، keyword3"> <meta http-equiv = "description" content = type = "text/css" href = "styles.css" rel = "خارجي nofollow" rel = "خارجي nofollow"> -> </head> <body> $ {requestscope.resinfo} </body> </html>6. اختبار
(1) أ. افتح المتصفح وأدخل عنوان الاختبار: http: // localhost: 8080/java_servlet_verifyimg ؛ تظهر الصفحة الموضحة في الشكل أدناه
ب. أدخل حساب التسجيل وكلمة المرور ورمز التحقق وانقر فوق Regist للإرسال
ج. نتائج الاختبار ، انقلب إلى صفحة تسجيل النقل ، مما يدل على أن التسجيل ناجح
(2) افتح صفحة التسجيل
أدخل رمز تسجيل الخطأ
صفحة نتائج الاختبار
زيادة!
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.