وظيفة رمز التحقق: عادة ، عند تسجيل الدخول أو تسجيل ما ، سيُطلب من المستخدمين إدخال رمز التحقق لتمييز سلوك المستخدم وسلوك برنامج الكمبيوتر. والغرض من ذلك هو منع التسجيل الضار ، وتكسير كلمة مرور القوة الغاشمة ، إلخ.
أفكار لتنفيذ رموز التحقق: استخدم الخادم لتحقيق وظيفة توليد الأرقام والحروف بشكل عشوائي لتشكيل الصور ، واستخدم صفحة JSP لتحقيق وظيفة عرض رموز التحقق ورموز التحقق من إدخال المستخدم ، ثم استخدم فئة الخادم للحصول على إدخال البيانات من قبل الصورة والمستخدم لتحديد ما إذا كانت البيانات متسقة.
تنفيذ الكود
1. اكتب فئة خادم تم إنشاؤها بشكل عشوائي في الأرقام والإنجليزية ، رمز المصدر:
package com ؛ import java.awt.color ؛ import java.awt.font ؛ import java.awt.graphics ؛ import java.awt.image.bufferedImage ؛ import java.io.bytearrayoutputstream ؛ import java.ioexception ؛ import java.printwriter ؛ javax.servlet.servletexception ؛ استيراد javax.servlet.servletoutputstream ؛ استيراد javax.servlet.http.httpservlet ؛ استيراد javax.servlet.http.httpservletrequest ؛ استيراد javax.servlet.http.httpservepresponse ؛ javax.servlet.http.httpsession ؛ الطبقة العامة logcheck يمتد httpservlet {public logcheck () {super () ؛ } public void dorder () {super.destroy () ؛ } doget public void (طلب httpservletrequest ، استجابة httpservletresponse) يلقي servletexception ، ioException {dopost (request ، response) ؛ }/*رمز التنفيذ الأساسي*/public void dopost (طلب httpservletrequest ، استجابة httpservletresponse) يلقي servleTexception ، ioException {reponse.setContentType ("Image/JPEG") ؛ جلسة httpsession = request.getSession () ؛ عرض int = 60 ؛ ارتفاع int = 20 ؛ // قم بتعيين المتصفح بعدم تخزين هذا الاستجابة هذه. استجابة. استجابة. // إنشاء صورة للذاكرة واحصل على صورة سياق الرسومات bufferedImage = جديد bufferedImage (العرض ، الارتفاع ، bufferedImage.type_int_rgb) ؛ الرسومات g = image.getGraphics () ؛ /** إنشاء رمز التحقق العشوائي* جدول الحرف الذي يحدد رمز التحقق*/ string chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" ؛ char [] rands = new Char [4] ؛ لـ (int i = 0 ؛ i <4 ؛ i ++) {int rand = (int) (math.random () *36) ؛ Rands [i] = chars.charat (rand) ؛ } /** إنشاء صورة* ارسم الخلفية* / g.setColor (لون جديد (0xDCDCDC)) ؛ G.FillRect (0 ، 0 ، العرض ، الارتفاع) ؛ /** قم بإنشاء 120 نقطة تداخل بشكل عشوائي*/ لـ (int i = 0 ؛ i <120 ؛ i ++) {int x = (int) (math.random ()* width) ؛ int y = (int) (Math.Random ()*الارتفاع) ؛ int red = (int) (Math.Random ()*255) ؛ int green = (int) (Math.Random ()*255) ؛ int Blue = (int) (Math.Random ()*255) ؛ G.SetColor (لون جديد (أحمر ، أخضر ، أزرق)) ؛ G.Drawoval (x ، y ، 1 ، 0) ؛ } g.setColor (color.black) ؛ G.SetFont (خط جديد (null ، font.italic | font.bold ، 18)) ؛ // إخراج أحرف مختلفة من رمز التحقق في ارتفاعات مختلفة G.DrawString (""+Rands [0] ، 1 ، 17) ؛ G.DrawString (""+Rands [1] ، 16 ، 15) ؛ G.DrawString (""+Rands [2] ، 31 ، 18) ؛ G.DrawString (""+Rands [3] ، 46 ، 16) ؛ G.Dispose () ؛ . bytearrayoutputstream baoS = جديد bytearrayoutputStream () ؛ imageio.write (صورة ، "jpeg" ، baos) ؛ byte [] buffer = baos.tobytearray () ؛ استجابة. sos.write (المخزن المؤقت) ؛ Baos.Close () ؛ sos.close () ؛ Session.setAttribute ("CheckCode" ، سلسلة جديدة (RANDS)) ؛ } public void init () يلقي servletexception {// ضع الكود الخاص بك هنا}} 2. الصفحة المستخدمة لعرض رمز التحقق :
<٪@ page language = "java" import = "java.util.*" pageencoding = "utf-8" ٪> <٪ string path = request.getContextPath () ؛ String basePath = request.getScheme ()+": //" request.getServerName ()+"+request.getserport () "-// w3c // dtd html 4.01 transitional // en"> <html> <head> <base href = "<٪ = basepath ٪>"> <title> index </title> <meta http-equiv = "pragma" content = "no-cache http-equiv = "expires" content = "0"> <meta http-equiv = "keywords" content = "keyword1 ، keyword2 ، keyword3"> <meta http-equiv = "description" content = "this is is my page" <! <form action = "yanzheng" method = "post"> <input type = "text" name = "name" size = "5" MaxLength = "4"
3. يستخدم للتحقق مما إذا كان رمز التحقق الذي تم إدخاله صحيحًا:
package com ؛ import java.io.ioException ؛ استيراد java.io.printwriter ؛ استيراد javax.jms.session ؛ استيراد javax.servlet.servletexception ؛ استيراد javax.servlet.http.httpservlet ؛ استيراد javax.servlet.http.http.httplest ؛ javax.servlet.http.httpservletresponse ؛ import javax.servlet.http.httpsession ؛ import javax.servlet.http.httpsession ؛ public class yanzheng يمتد httpservlet {public yanzheng () {sup () ؛ } public void dorder () {super.destroy () ؛ } doget public void (طلب httpservletrequest ، استجابة httpservletresponse) يلقي servletexception ، ioException {dopost (request ، response) ؛ } /*CORE CODE* / public void dopost (httpservletrequest request ، httpservletresponse) يلقي servletexception ، ioException {string info = null ؛ /*احصل على قيمة الإدخال*/ string value1 = request.getParameter ("name") ؛ /*احصل على قيمة الصورة*/ httpsession = request.getSession () ؛ string value2 = (string) session.getAttribute ("CheckCode") ؛ /*قارن القيمتين (الحروف غير حساسة للحالة)*/ if (value2.equalsignorecase (value1)) {info = "إدخال رمز التحقق صحيح" ؛ } آخر {info = "خطأ إدخال رمز التحقق" ؛ } system.out.println (info) ؛ request.setAttribute ("info" ، info) ؛ request.getRequestDispatcher ("/login.jsp"). } public void init () يلقي servletexception {// ضع الكود الخاص بك هنا}}4. عرض واجهة بنية الإدخال (ما إذا كان رمز التحقق من الإدخال صحيحًا):
<٪@ page language = "java" import = "java.util.*" pageencoding = "utf-8" ٪> <٪ string path = request.getContextPath () ؛ String basePath = request.getScheme ()+": //" request.getServerName ()+"+request.getserport () "-// w3c // dtd html 4.01 transitional // en"> <html> <head> <base href = "<٪ = basepath ٪>"> <title> my jsp 'login.jsp' page page </title> <meta http-equiv = "pragma" content = "no-cache" content = "no-cache"> <meta http-equiv = "Expires" content = "0"> <meta http-equiv = "keywords" content = "keyword1 ، keyword2 ، keyword3"> <meta http-equiv = "description description =" this is is my part "<! HREF = "STYLES.CSS"> -> </head> <body> <٪ = request.getAttribute ("info") ٪> </body> </html>5. هيكل المشروع وقطات شاشة التأثير:
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.