Die Funktion des Verifizierungscodes: Normalerweise müssen Benutzer beim Anmelden oder Registrieren eines Systems einen Bestätigungscode eingeben, um das Benutzerverhalten vom Computerprogrammverhalten zu unterscheiden. Ziel ist es, eine böswillige Registrierung, das Knacken von Brute-Force-Passwort usw. zu verhindern.
Ideen zur Implementierung von Verifizierungscodes: Verwenden Sie den Server, um die Funktion des zufälligen Generierens von Nummern und Buchstaben zur Bildung von Bildern zu realisieren, die JSP -Seite zu erkennen, um die Funktion des Anzeigens von Bestätigungscodes und Benutzerneingabeberichtungscodes zu realisieren, und verwenden Sie dann die Serverklasse, um die Dateneingabe vom Bild zu erhalten, und Benutzer, um zu bestimmen, ob die beiden Daten konsistent sind.
Code -Implementierung
1. Schreiben Sie eine Serverklasse, die zufällig in Zahlen und Englisch, Quellcode, generiert wird:
Paket com; java.awt.color; import Java.awt.font; import Java.awt.graphics; Import Java.awt.image.Biftedimage; javax.servlet.servletException; import javax.servlet.servletoutputstream; import Javax.servlet.http.httpServlet; import Javax.servlet.http.httpletrequest; import Javax.servlet.http.http.htpletpletresponse; Import. javax.servlet.http.httpSession; öffentliche Klasse Logcheck erweitert httpServlet {public Logcheck () {Super (); } public void destroy () {Super.Destroy (); } public void dodget (httpServletRequest -Anforderung, httpServletResponse -Antwort) löst ServletException aus, iOException {Dopost (Request, Antwort); }/*Kerncode der Implementierung*/public void dopost (httpServletRequest Request, httpServletResponse -Antwort) löst ServletException, IOException {response.setContentType ("Image/jpeg") aus; HttpSession Session = Request.GetSession (); int width = 60; int Höhe = 20; // Setzen Sie den Browser, um diese Bildreaktion nicht zu zwischenstrahlen. response.setheader ("cache-control", "no-cache"); response.setDateHeader ("läuft", 0); // Speicherbild erstellen und den Grafikkontext bufferedimage Image = new bufferedImage (Breite, Höhe, bufferedimage.type_int_rgb); Grafik g = image.getGraphics (); /** Generieren Sie zufällige Verifizierungscode* Zeichen Tabelle, die den Verifizierungscode definiert*/ String chars = "0123456789abcdefghijklMnopqrstuvwxyz"; char [] rands = new char [4]; für (int i = 0; i <4; i ++) {int rand = (int) (math.random () *36); Rands [i] = chars.charat (Rand); } /** Bild generieren* Hintergrund zeichnen* / g.setColor (neue Farbe (0xdcdcdc)); G.FillRect (0, 0, Breite, Höhe); /** Generieren zufällig 120 Interferenzpunkte*/ for (int i = 0; i <120; i ++) {int x = (int) (math.random ()* width); int y = (int) (math.random ()*Höhe); int rot = (int) (math.random ()*255); int green = (int) (math.random ()*255); int blue = (int) (math.random ()*255); G.SetColor (neue Farbe (rot, grün, blau); G.Drawoval (x, y, 1, 0); } G.SetColor (color.black); G.SetFont (neue Schriftart (Null, font.Italic | font.bold, 18)); // Ausgabe verschiedener Zeichen des Verifizierungscodes in verschiedenen Höhen 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.disponse (); // fügen Sie das Bild in den Client -ServletOutputStream SOS = response.getOutputStream () ein. BytearrayoutputStream baos = new bytearrayoutputStream (); Imageio.Write (Bild, "JPEG", Baos); byte [] buffer = baos.tobytearray (); Antwort.SetContentLength (Buffer.Length); sos.write (puffer); baos.close (); sos.close (); Session.SetAttribute ("checkCode", New String (Rands)); } public void init () löscht servleTexception {// Ihren Code hier ein.}} 2. Seite zur Anzeige des Verifizierungscodes :
<%@ page Language = "java" import = "java.util. "-// w3c // dtd html 4.01 transitional // en"> <html> <head> <base href = "<%= basepath%>"> <title> Index </title> <meta http-äquiv = "pragma" content = "no-cache"> <meta http-äquiv = "cache-cache". http-äquiv = "expires" content = "0"> <meta http-äquiv = "keywords" content = "keyword1, keyword2, keyword3"> <meta http-äquiv <form action = "yanzheng" methode = "post"> <Eingabe type = "text" name = "name" size = "5" maxLength = "4"> <a href = "index.jsp"> <img src = "logcheck"> </a> <br> <br> <Eingabe type = "subjekt" arrang "> </body> </body> </body> </body> </body> </body> </body> </body> </body
3.. Wird verwendet, um zu überprüfen, ob der eingegebene Verifizierungscode korrekt ist:
Paket com; java.io.ioException; import Java.io.printwriter; import Javax.jms.Session; Import Javax.servlet.ServletException; importieren javax.servlet.http.httpservlet; import.http.httpletrequest; javax.servlet.http.httpServletResponse; import javax.servlet.http.httpSession; import Javax.servlet.http.httpSession; öffentliche Klasse Yanzheng erweitert Httpervlet {öffentlich yanzHeng () {Super (); } public void destroy () {Super.Destroy (); } public void dodget (httpServletRequest -Anforderung, httpServletResponse -Antwort) löst ServletException aus, iOException {Dopost (Request, Antwort); } /*Kerncode* / public void dopost (httpServletRequest Request, httpServletResponse -Antwort) löst ServletException aus, ioException {String info = null; /*Den Eingangswert abrufen*/ string value1 = request.getParameter ("name"); /*Den Bildwert abrufen*/ httpSession Session = Request.GetSession (); String value2 = (string) session.getAttribute ("checkCode"); /*Vergleiche die beiden Werte (Buchstaben sind Fall-unempfindlich)*/ if (value2.equalSignoreCase (value1)) {info = "Verifizierungscode-Eingabe korrekt"; } else {info = "Bestätigungscode -Eingabefehler"; } System.out.println (info); Request.SetAttribute ("Info", Info); request.getRequestDispatcher ("/login.jsp"). Forward (Request, Antwort); } public void init () löscht servleTexception {// Ihren Code hier ein.}}4. Zeigen Sie die Schnittstelle zur Eingabestruktur an (ob der Eingabeverifizierungscode korrekt ist):
<%@ page Language = "java" import = "java.util. "-// w3c // dtd html 4.01 transitional // en"> <html> <head> <Base href = "<%= Basepath%>"> <titels> my jsp 'login.jsp' Startseite </title> <meta http-äquiv = "pagma" content = "no-cache"> <meta http-äxiv = " content = "no-cache"> <meta http-äquiv = "expires" content = "0"> <meta http-äquiv = "keywords" content = "keyword1, keyword2, keyword3"> <meta http-äquiv href = "styles.css"> -> </head> <body> < %= request.getAttribute ("info") %> </body> </html>5. Projektstruktur und Effekt -Screenshots:
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.