Ich glaube, jeder ist mit Überprüfungscodes vertraut. Unabhängig davon, ob Sie ein Konto beantragen oder sich in einigen Fällen anmelden, müssen Sie den Bestätigungscode eingeben. Nach der Statistik beträgt die Wahrscheinlichkeit, den Verifizierungscode erfolgreich in einer Überprüfung zu übertragen, 90%, was nicht hoch ist. So viele Menschen werden definitiv an der Notwendigkeit dieses Designs zweifeln, die die Benutzererfahrung verringern, aber Hegel sagte: Alles, was vernünftig ist, ist realistisch; Alles, was realistisch ist, ist rational. Lassen Sie uns als nächstes den Verifizierungscode kennenlernen.
Der Verifizierungscode ist ein öffentliches vollautomatisches Programm, das unterscheidet, ob ein Benutzer ein Computer oder eine Person ist. Es wird verwendet, um ein böswilliges Kennwort zu verhindern, das Ticketwisch und das Forum -Überschwemmungen zu verhindern und Hacker daran zu hindern, sich ständig durch Brute -Force -Knacken anzumelden. Es wird in Banken, Gemeinden, Foren, Abstimmungssystemen usw. verwendet.
Schauen wir uns ohne weiteres die vier Möglichkeiten an, die ich kenne, um den Verifizierungscode in Java zu implementieren.
Methode 1:
Die erste Methode war die erste, woran ich dachte, und es war die einfachste Implementierungslogik, aber sie war äußerst effizient und sicher.
Die spezifische Operation ist: 1. Photoshop zum Erstellen eines Verifizierungscodebildes. Das rechteckige Bild kann notwendige englische Buchstaben, Zahlen oder Chinesen haben (wie oben)
2. Zeigen Sie das Bild auf der Swing -Steuerung oder JSP -Seite an
3.. Übereinstimmen die entsprechende Verifizierungscodezeichenfolge für jedes Bild im Code
4. Wenn Sie beim Senden die Zeichenfolge in die Komponente oder das Textfeld und die Zeichenfolge jedes Bildes erhalten, können Sie sie mit der Equals () -Methode vergleichen.
Der Nachteil besteht darin, dass der Prozess der Erstellung von Verifizierungscode-Bildern zu zeitaufwändig ist und die Implementierungsmethode extrem niedrig ist, und es wird dringend empfohlen, es auf diese Weise zu implementieren. Die folgende Methode wird effizienter, schöner und relativ sicher.
Methode 2:
Hier sprechen wir über Java Web und die Implementierung des Verifizierungscode unter Servlet, und die Logik ist immer noch sehr klar.
Beginnen wir mit dem Front-End-Schlüsselcode, um den einfacheren Implementierungscode zu beseitigen:
Wenn wir auf "klar sehen können" klicken, wird das Überprüfcode -Bild aktualisiert und eine JS -Funktion wird aufgerufen, um den Bildpfad zurückzusetzen, um das Bild zu ersetzen. Bitte beachten Sie den Code unten. Im Code soll <%= Request.getContextPath ()%> das Problem der relativen Pfade lösen und den Stammpfad der Site zurückgeben. /Servlet/Imageservlet ist ein Ganzes, der auf den Servlet von Imageservlet hinweist. Warum müssen wir vorher A /Servlet hinzufügen? Da wir Konfigurationszuordnung in web.xml erstellt haben, kann dies als Änderung eines längeren Namens verstanden werden. Schauen Sie sich dann die folgende JS -Funktion an. Einige Leute haben möglicherweise Fragen, warum eine aktuelle Zeit bekommen und zum Ende des Pfades hinzufügen? In der Tat soll dies das Problem des Browser -Cache lösen. Es ist das Problem, dass das Verifizierungscode -Bild nach Auslöser des Imageservlet geändert wurde, der Cache jedoch nicht geändert hat. Mit Hilfe unterschiedlicher Zeiten in jedem Moment kann der Browser -Cache ungültig werden.
<script type = "text/javaScript"> Funktion reloadCode () {var time = new Date (). GetTime (); document.getElementById ("imageCode"). } </script>Hier sind die wichtigsten Konfigurationsinformationen in web.xml:
<script type = "text/javaScript"> Funktion reloadCode () {var time = new Date (). GetTime (); document.getElementById ("imageCode"). } </script>Schauen wir uns dann an, wie das Schlüssel -Imageservlet Bilder generiert:
<servlet> <servlet-name>ImageServlet</servlet-name> <servlet-class>com.muke.ImageServlet</servlet-class> </servlet> <servlet> <servlet-name>LoginServlet</servlet-name> <servlet-class>com.muke.LoginServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name> Imageservlet </servlet-name> <URL-Muster>/Servlet/Imageservlet </url-pattern> </servlet-mapping> <Servlet-Mapping> <Servlet-name> LoginServlet </Servlet-name> <URL-PATTER>/SERVLET/LoginServlet </url-patter> </dienstmaping> </dienstmaping>
Wenn Sie lebhafter beschreiben möchten, wie dieser Verifizierungscode implementiert wird, klingt nur ein Wort "Zeichnen" ähnlich wie die erste Methode, und er ist immer noch relativ niedrig, aber die Effizienz der Verwendung von Code zum automatischen "Zeichnen" des Verifizierungscode hat definitiv unzählige Zeiten erhöht. Schauen wir uns den obigen Code an. Erstens wird ein bufferter Objekt BI instanziiert. BI wird verwendet, um das Bild des Verifizierungscode zu zeichnen. Wenn Sie dann bi verwenden, um einen Pinsel G zu erhalten und G den rechteckigen Hintergrund der Entität zu zeichnen. Verwenden Sie dann die einfache Logik, um die häufig verwendete Methode Drawstring () in Java aufzurufen, um die Verifizierungscodezeichen auf dem Rechteck zu zeichnen. Gleichzeitig wird die Zeichenfolge nach der Übermittlung des Bestätigungscodes zum Vergleich der JSP-integrierten Objektsitzung zum Vergleich der JSP-integrierten Objektsitzung zum Vergleich der JSP-integrierten Objektsitzung hinzugefügt. Um den Verifizierungscode anzuzeigen, müssen wir auch das generierte Verifizierungscode -Bild in einen bestimmten Bildformat in den ImageIo -Stream schreiben.
Wie aus dem unten stehenden LoginServlet hervorgeht, können Sie die Zeichenfolge im Feld des Überprüfungscode -Einreichungsfelds vergleichen, indem Sie die gerade im ImagebotialServlet gespeicherte Zeichenfolge erhalten. Sie können die Saiten in Kleinbuchstaben oder Großbuchstaben wechseln, um Großbuchstaben zu ignorieren.
public class Imageservlet erweitert HttpServlet (public void dodget (httpServletRequest Request, httpServletResponse -Antwort). Grafik g = bi.getGraphics (); Farbe c = neue Farbe (,,); G.SetColor (c); G.FillRect (,,); char [] ch = "abcdefghijklmnopqrstuvwxyz" .toCharArray (); Random r = neu random (); int len = ch.length, Index; StringBuffer sb = new StringBuffer (); für (int i =; i <; i ++) {index = r.Nextint (len); G.SetColor (neue Farbe (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", response.getOutputStream ()); }}Hier ist die Implementierungslegende:
Das obige ist das relevante Wissen über die vom Herausgeber vorgelegte Produktion von Java -Verifizierungscode. Ich hoffe, es wird für Sie hilfreich sein! Ich werde Ihnen die Produktion von Java -Verifizierungscode vorstellen (Teil 2). Interessierte Freunde, bitte achten Sie auf die Website wulin.com!