Der Ursprung eines Verifizierungscode
Um zu verhindern, dass einige Personen automatische Tools (z. B. automatische Registrierungsmaschinen) zur Verarbeitung von Stapeldaten verwenden, werden Verifizierungscodes in verschiedenen Funktionsknoten hinzugefügt, um den Effekt der Blockierung der automatischen Software zu verifizieren
Die klassischsten Anwendungen sind: Graphic -Verifizierungscode für Website -Registrierung; Als nächstes wird durch Java -Technologie in Kombination mit Servlet ein für die Registrierung von Website -Registrierung erforderlicher grafischer Verifizierungscodeprogramm für Ihre Referenz implementiert.
2. Implementieren Sie den Grafikverifizierungscode -Effekt der Registrierungsseite
1. Erstellen Sie ein Webprojekt: Java_Servlet_verifyImg
2. Erstellen Sie einen Controller, der automatisch Graphenverifizierungscodes generiert - VerifyImgServlet
Paket com.phome javax.servlet.servletoutputStream; import javax.servlet.http.httpServlet; import javax.servlet.http.httpserSequest; importieren javax.servlet.http.httpletRespon. com.sun.image.codec.jpeg.jpegimageCoder; öffentliche Klasse Verifyimgservlet erweitert httpServlet { / ** * * / private statische endgültige long serialversionuid = 1l; // Setzen Sie ein zufälliges Zeichenwörterbuch. 0,o,1,I, etc. public static final char[] CHARS = { '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'H', 'J', ',' 'x', 'y', 'z'}; public static random random = new random (); // Zufallszahl Objekt public static String getRandomstring () {StringBuffer Buffer = new StringBuffer (); // String -Cache für (int i = 0; i <6; i ++) // Sechs Schleifen, um Zeichen zu erhalten {Buffer.Append (chars [random.Nextint (chars.len)]); // nimm ein Zeichen zufällig gleichzeitig} return buffer.toString (); } public static color getRandomcolor () {neue Farbe zurückgeben (random.Nextint (255), random.nextint (255), random.nextint (255)); } public statische Farbe getReverseSecolor (Farbe c) {Neue Farbe zurückgeben (255 - c.Getred (), 255 - c.Getgreen (), 255 - c.GetBlue ()); } public statische Farbe getReverseSecolor (Farbe c) {Neue Farbe zurückgeben (255 - c.Getred (), 255 - c.Getgreen (), 255 - c.GetBlue ()); } public void dodget (httpServletRequest -Anforderung, httpServletResponse -Antwort) löst ServletException aus, iOException {response.setContentType ("Image/JPEG"); // Setzen Sie den Ausgabetyp so, dass String randomString = getrandomstring () nicht ausgelassen wird. // rufen Sie die Methode auf, um zufällige Zeichenfolge zu generieren, um die zufällige String -Anforderung zu erhalten. GetSession (true) .SetAttribute ("randomstring", randomstring); // die Zeichenfolge in der Sitzung int width = 100 speichern; // Bildbreite int Höhe = 30; // Bildhöhe Farbe Farbe = getRandomcolor (); // zufällige Farbe für die Hintergrundfarbe Farb up Reverse = getReverseSecolor (Farbe); // Farbe invertiert für Vordergrundfarbe BufferedImage bi = new bufferedImage (Breite, Höhe, bufferedimage.type_int_rgb); // Erstellen Sie ein Farbbildgrafik2d g = bi.createGraphics (); // das Zeichenobjekt G.SetFont (neue Schriftart (font.sans_serif, font.bold, 16)) erhalten; // Schriftart G.SetColor (Farbe) setzen; // Farbe G.FillRect (0, 0, Breite, Höhe) einstellen; // Zeichnen Sie den Hintergrund G.SetColor (umgekehrt); // die Farbe G.Drawstring einstellen (Randomstring, 18, 20); // zufällige Zeichen für (int i = 0, n = random.Nextint (100); i <n; i ++) // bis zu 100 Rauschpunkte {g.drawrect (random.Nextint (width), random.nextint (Höhe), 1, 1, 1) zeichnen; // Zufallsrauschpunkte} ServletOutputStream out = response.getOutputStream (); // Es scheint zu sein, dass der Ausgabestream JPegimageCoder ccodierer = jpegcodec.createjpeNcoder (out); // Encoder Encoder.encode (bi); // Codierung des Bildes out.flush (); // Ausgabe an den Client} public void dopost (httpServletRequest Request, httpServletResponse -Antwort) löscht ServletException, IOException {this.doget (Anfrage, Antwort); }}3. Erstellen Sie einen Register Controller - Registservlet
Paket com.phome.servlet; import java.io.ioxception; import Javax.servlet.servletException; import Javax.servlet.http.httpserd; javax.servlet.http.httpServletResponse; importieren javax.servlet.http.httpSession;/** * Registrierungscontroller * @author Zuoyi * */public class RegisterServlet erweitert httpervlet {/** */private statische lange Serialversionuid = 1 1L; @Override Protected void dagget (httpServletRequest req, httpServletResponse resp) löst ServletException aus, ioException {this.dopost (req, resp); } @Override Protected void dopost (httpServletRequest req, httpServletResponse resp) löst ServletException aus, ioException {// den Registrierung zufälligen Bestätigungscode aus der Sitzung httpSession Session = req.getSession (); String randomString = (string) session.getAttribute ("randomString"); // Abrufen Sie den Benutzer -Eingabe -Verifizierungscode -String -String -inputRandomstring = req.getParameter ("randomstr"); // Stellen Sie sicher, dass der Verifizierungscode übergeben wird, und registrieren Sie ihn, wenn (randomstring.equals (inputRandomstring)) {req.setattribute ("ressinfo", "Herzlichen Glückwunsch! Die Registrierung war erfolgreich!"); } else {req.setAttribute ("ressinfo", "Der Verifizierungscode wird falsch eingegeben, bitte überprüfen und registrieren Sie sich erneut!"); } // Wenn die Registrierung erfolgreich ist oder fehlgeschlagen ist, wenden Sie sich zur Seite result.jsp, um die Registrierungsergebnisse anzuzeigen. . . req.getRequestDispatcher ("result.jsp"). Forward (req, resp); }}4. Konfigurieren Sie 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-app-app-app-app- = <display-name>simg</display-name> <!-- Configure user registration servlet --> <servlet> <servlet-name>registservlet</servlet-name> <servlet-class>com.phome.servlet.RegistServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>registservlet</servlet-name> <url-pattern>/regist.action</url-pattern> </servlet-mapping> <!-- Configure graph verification code servlet --> <servlet> <servlet-name>verifyimg</servlet-name> <servlet-class>com.phome.servlet.VerifyImgServlet</servlet-class> </servlet> <servlet-mapping> <servlet-mapping> <servlet-name> verifyimg </servlet-name> <url-puftern> /Verifyimg.Action </url-pattern> </servlet-mapping> <Welcome-File-List> <Welcome-file> INDEX <Welcome-File> default.html </Welcome-File> <Welcome-File> default.htm </Welcome-File> <Welcome-File> Standard.jsp </Welcome-File> </Welcome-File-List> </web-App>
5. Erstellen einer Registrierungsansichtstestseite - Regist.jsp
<%@ page Language = "java" import = "java.util. "-// w3c // dtd html 4.01 transitional // en"> <html> <head> <base href = "<%= basepath%>" rel = "external nofollow" rel = "external nofollow"> <titels http-äquiv = "cache-control" content = "no-cache"> <meta http-äquiv = "expires" content = "0"> <meta http-äquiv type = "text/css" href = "styles.css" rel = "externe nofollow" rel = "external nofollow"> -> </head> <body> <Form Action = "$ {pageContext.Request.ContextPath} /regist.Action" methode "> username: <eingabetyps: < -Input -Typs: < -Input". type = "text" name = "password"/> <br/> Bitte geben Sie den Verifizierungscode ein, um sich zu registrieren: <img src = "$ {pageContext.request.contextPath} /VerifyImg.Action"/> <Eingabe type = "text" name = "randomstr"/> <br/> </html = "value". 5.1 Erstellen einer Registrierungsergebnisseite - Ergebnis.jsp
<%@ page Language = "java" import = "java.util. "-// w3c // dtd html 4.01 transitional // en"> <html> <head> <base href = "<%= basepath%>" rel = "external nofollow" rel = "external nofollow"> <titels http-äquiv = "cache-control" content = "no-cache"> <meta http-äquiv = "expires" content = "0"> <meta http-äquiv type = "text/css" href = "styles.css" rel = "externe nofollow" rel = "externe nofollow"> -> </head> <body> $ {RequestScope.resinfo} </body> </html>6. Test
(1) a. Öffnen Sie den Browser und geben Sie die Testadresse ein: http: // localhost: 8080/java_servlet_verifyimg; Die in der folgende Abbildung gezeigte Seite wird angezeigt
B. Geben Sie das Registrierungskonto-, Passwort- und Überprüfungscode ein und klicken Sie auf Regist, um sie zu senden
C. Testergebnisse, springen Sie zur Übertragungsregistrierungsseite und fordern Sie auf, dass die Registrierung erfolgreich ist
(2) Öffnen Sie die Registrierungsseite
Geben Sie den Fehlerregistrierungscode ein
Seite Testergebnisse
über!
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.