1. Vorwort
Überprüfungscodes können in unserem Leben sehr häufig sein. Eine Website oder eine App hat diese Funktion, aber warum brauchen Sie das? Wie macht ich das? Im Folgenden wird der Editor alle dazu bringen, Java zu verwenden, um die Funktion eines Verifizierungscode zu vervollständigen.
2. Die Funktion des Verifizierungscodes
Im Allgemeinen kann es Personen daran hindern, Roboter zu verwenden, um sich automatisch in Stapeln zu registrieren und sich kontinuierlich bei bestimmten registrierten Benutzern anmelden, um bestimmte Programme für Brute-Force-Crack-Methoden zu verwenden. Da der Verifizierungscode ein Bild ist, das Zahlen und Symbole mischt, sieht es für das menschliche Auge schwierig aus, zu erkennen, und es ist für die Maschine noch schwieriger zu erkennen.
3. Java -Implementierung
3.1 Legen Sie eine Servlet -Klasse zum Überprüfungscode ein:
Paket com.bjpowernode.drp.util.servlet; import Java.awt.color; import Java.awt.font; import Java.awt.graphics; Import Java.awt.image.Bufferedimage; Import Java.ioxception; Import Java.util.Umage.Random; javax.servlet.servletException; import javax.servlet.http.httpservlet; import javax.servlet.http.httpServletRequest; import javax.servlet.htttp.httpletRespectRectRectRectRectRectreScorte. ARES * */public class Authimage erweitert HttpServlet {private statische endgültige String content_type = "text/html; charSet = gb2312"; // Die Größe der Buchstaben festlegen, Größe private Schriftart mfont = new Font ("Times New Roman", font.plain, 17); public void init () löscht servletException {super.init (); } Color getrandcolor (int fc, int bc) {random random = new random (); if (fc> 255) fc = 255; if (bc> 255) bc = 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); Neue Farbe zurückgeben (r, g, b); } public void Service (httpServletRequest-Anfrage, httpServletResponse-Antwort) löst ServletException aus, ioException {response.setheader ("pragma", "no-cache"); response.setheader ("cache-control", "no-cache"); response.setDateHeader ("läuft", 0); // Geben Sie an, dass die generierte Antwort die Bildantwort ist. int width = 100, Höhe = 18; Bufferedimage image = new bufferedImage (width, Höhe, bufferedimage.type_int_rgb); Grafik g = image.getGraphics (); Random random = new random (); G.SetColor (GetRandcolor (200, 24, 250)); G.FillRect (1, 1, Breite-1, Höhe-1); G.SetColor (neue Farbe (102,102,102)); g.drawrect (0, 0, width-1, Höhe-1); g.setfont (mfont); G.SetColor (getrandcolor (160.200)); // zeichne eine zufällige Zeile für (int i = 0; i <155; i ++) {int x = random.nextint (width - 1); int y = random.nextint (Höhe - 1); int xl = random.nextint (6) + 1; int yl = random.nextint (12) + 1; g.drawline (x, y, x + xl, y + yl); } // Zeichnen Sie eine zufällige Zeile aus der anderen Richtung für (int i = 0; i <70; i ++) {int x = random.Nextint (width - 1); int y = random.nextint (Höhe - 1); int xl = random.nextint (12) + 1; int yl = random.nextint (6) + 1; g.drawline (x, y, x - xl, y - yl); } // Zufallsnummern generieren und Zufallszahlen in Buchstaben umwandeln String srand = ""; für (int i = 0; i <6; i ++) {int itmp = random.nextint (26)+65; char ctmp = (char) itmp; srand += string.Valueof (ctmp); G.SetColor (neue Farbe (20+random.Nextint (110), 20+random.Nextint (110), 20+random.Nextint (110))); g.drawstring (String.Valueof (ctmp), 15*i+10,16); } HttpSession Session = Request.GetSession (true); Session.SetAttribute ("Rand", Srand); g.disponse (); Imageio.Write (Bild, "JPEG", response.getOutputStream ()); } public void destroy () {}}3.2 SERGLET in web.xml unter der Web-inf-Datei konfigurieren
// Servlet Name und Ort <Servlet> <Servlet-Name> Authimage </Servlet-Name> <Servlet-Class> com.bjpowerNode.drp.util.servlet.Authimage </servlet-class> </Servlet> // Servlet funktioniert auf diesen Mappings <Servlet-Mapping> <Servlet-nam> Authimage <// Servlet <// Servlet <// Servlet <// <URL-Muster>/Servlet/Login/Authimage </url-muster> </Servlet-Mapping>
3.3 Die Rezeption ruft Servlet an
JSP -Code:
<img id = "img" style = "cursor: pointer;" src = "$ {pageContext.request.contextPath}/Servlet/Login/Authimage" Onclick = "ChangeImg ()">JS:
// Klicken Sie auf den Verifizierungscode, um die Bildfunktion zu ändern. Änderung () {var img = document.getElementById ("img"); img.src = "$ {pageContext.request.contextPath}/Servlet/Login/Authimage? D ="+math.random (); Rückgabe falsch;}4. Zusammenfassung
Durch dieses Erlernen des Verifizierungscode habe ich auch ein gewisses Verständnis der Interaktion zwischen dem gesamten Servlet und dem Front-End-Code erhalten, und die Datenübertragung wurde ebenfalls erheblich verbessert. Daher muss ich noch mehr über diese Fähigkeiten erfahren und sie in Zukunft zusammenfassen. Nur auf diese Weise kann das Wissen solide sein.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.