In diesem Artikel wurde der spezifische Code des Javaweb -Login -Überprüfungscodes für Ihre Referenz geteilt. Der spezifische Inhalt ist wie folgt
verwenden:
Controller: Verifizierungscode generieren
@RequestMapping ("/user/check.jpg") public void createCode (httpServletRequest-Anforderung, HttpServletResponse-Antwort) löst IOException aus {// den Browser benachrichtigen, um die Antwort nicht zu cache. response.setheader ("cache-control", "no-cache"); response.setheader ("pragma", "-1"); Captchautil util = captchautil.instance (); // Geben Sie den Überprüfungscode in die Sitzung ein, um String -Code = util.getString () zu überprüfen. Request.GetSession (). setAttribute ("Code", Code); // Ausgabe des Webseiten -ImageIO.Write (util.getImage (), "jpg", response.getOutputStream ()); } JSP: Überprüfungscode anzeigen
<img id = "img" src = "<%= basepath%> user/check.jpg" onclick = "reAbresh ()">
Funktion refresh () {var url = $ ("#basepath"). val () + "Benutzer/check.jpg? number =" + math.random (); $ ("#img"). Attr ("Src", URL); } verifizieren:
Holen Sie sich, ob der Code in der Sitzung mit dem im Vordergrund zurückgesandten Code übereinstimmt
/ ** * Überprüfung des Verifizierungscodes * * @param session * @param code */ private void checkCode (httpSession Session, String -Code) {String codesession = (String) session.getAtTribute ("Code"); if (stringutils.isempty (codesession)) {log.Error ("Es wurde keine Verifizierungscodeinformationen generiert"); Neue IllegalStateException werfen ("ERR-01000"); } if (stringutils.isempty (code)) {log.Error ("keine Verifizierungscodeinformationen wurden ausgefüllt"); Neue BusinessException werfen ("ERR-06018"); } if (codesession.equalSignoreCase (Code)) {// Der Verifizierungscode wird übergeben} else {log.Error ("Verifizierungscode -Fehler"); Neue BusinessException werfen ("ERR-06019"); }} Werkzeuge:
Import Java.awt.Color; import Java.awt.font; importieren java.awt.graphics; Import Java.awt.image.BuffenedImage; import Java.util.random; /** * Verification code generation tool* @author HXL * */ public class CaptchaUtil { private BufferedImage image;// Image private String str;// Verification code private static char code[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ123456789".toCharArray(); public static Final String Session_code_name = "Code"; private captchautil () {init (); // Initialisierungseigenschaft}/** randomNumutil Instance*/ public static captchautil Instance () {return New Captchautil (); } /** Get Verification Code Bild* / public bufferedImage getImage () {return this.image; } /** Den Verifizierungscode für das Bild abrufen* / public String getString () {return this.str; } private void init () {// Bild int width = 85, Höhe = 20; Bufferedimage image = new bufferedImage (width, Höhe, bufferedimage.type_int_rgb); // Erhalten Sie die grafische Kontextgrafik g = image.getGraphics (); // generieren random randal = new random (); // Hintergrundfarbe G.SetColor (getrandcolor (200, 250)) festlegen; G.FillRect (0, 0, Breite, Höhe); // Setzen Sie die Schriftart G.SetFont (neue Schriftart ("Times New Roman", Schriftart, 18)); // generieren zufällig 155 Interferenzleitungen, wodurch der Authentifizierungscode im Bild weniger wahrscheinlich ist, dass sie von anderen Programmen G.SetColor (getRandcolor (160, 200)) erkannt werden; für (int i = 0; i <155; i ++) {int x = random.nextint (width); int y = random.nextint (Höhe); int xl = random.nextint (12); int yl = random.nextint (12); g.drawline (x, y, x + xl, y + yl); } // Nehmen Sie den zufällig generierten Authentifizierungscode (4-Grad-Nummer) String srand = ""; für (int i = 0; i <4; i ++) {string rand = string.ValueOf (code [random.nextint (code.length)]); srand += rand; // den Authentifizierungscode im Bild G.SetColor (neue Farbe (20 + random.Nextint (110)), 20 + random.Nextint (110)) anzeigen; // Die Farbe der Anruffunktion ist dieselbe, möglicherweise weil der Samen zu nahe ist, sodass Sie nur G.Drawstring (Rand, 13 * i + 6, 16) direkt erzeugen können; } // Zuweisungsüberprüfungscode this.str = srand; // Image wirksam G.Disonse (); // bytearrayInputStream input = null; // bytearrayoutputStream output = new bytearrayoutputStream (); // try {// ImageOutputStream ImageOut = imageIO.CreateImageOutputStream (Ausgabe); // Imageio.write (Bild, "JPEG", ImageOut); // Imageout.close (); // input = new bytearrayInputStream (output.tobytearray ()); //} catch (Ausnahme e) {// system.out.println ("Fehler aufgetreten, wenn das Verifizierungscode -Bild generiert wird:" + e.toString ()); //} // this.image = Eingabe this.image = Bild;/* Image*/}/** Random Color für einen bestimmten Bereich erhalten*/ private Farbe getrandColor (int fc, int bc) {random randoms random = new randomy 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); Neue Farbe zurückgeben (r, g, b); }} Lassen Sie uns schließlich erklären: Der Anmeldesabzeptor muss den Pfad freigeben, um den Verifizierungscode zu generieren! Der Login -Interceptor muss den Pfad freigeben, um den Verifizierungscode zu generieren! ! Der Login -Interceptor muss den Pfad freigeben, um den Verifizierungscode zu generieren! ! ! Sagen Sie dreimal wichtige Dinge ~~
Letzte Anzeige:
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.