Dieser Artikel teilt den Beispielcode mit dem Java -Verifizierungscode für Ihre Referenz. Der spezifische Inhalt ist wie folgt
Paket com.gonvan.component.captcha; Import Java.awt. importieren javax.imageo.imageo; import Javax.servlet.servletOutputStream; import Javax.servlet.http.httpsertRequest; importieren javax.servlet.http.htttpletResponse; /*** Erstellt von Yuerzm am 2016/3/14. */public class captchafactory {private static final char [] code_sequence = "abcdefghijklmnopqrstuvwxyz0123456789" .tocharArray (); private statische endgültige int default_width = 60; private statische endgültige int default_height = 20; private statische endgültige int default_code_len = 4; private statische endgültige int default_code_x = 13; private statische endgültige int default_code_y = 16; private statische endgültige int default_font_size = 18; private statische endgültige String default_font_family = "Times New Roman"; private statische captchafactory Instance = new Captchafactory (); private int width = default_width; // Definieren Sie die breite private int height = default_height; // die Höhe der Höhe private int länge = default_code_len; // Definieren Sie die Anzahl der Überprüfungscodes, die auf dem Bild privat int xx = default_code_x angezeigt werden; // Definieren Sie den Verifizierungscode x Koordinate private int yy = default_code_y; // Definieren Sie die auf dem Bild privaten int -fontsize = default_font_size angezeigten Verifizierungscode y -Koordinaten; // Definieren Sie die Schriftgröße des auf dem Bild privaten String fontfamily = default_font_family angezeigten Verifizierungscode; // Definieren Sie die Anzahl der im Bild angezeigten Verifizierungscode private captchafactory () {} public static captchafactory getInstance () {return Instance; } / ** * Konfigurieren Sie Breite und Höhe * * @param w * @param h * @return * / public Captchafactory configWidTHandHeight (int w, int h) {instance.width = w; Instance.Height = H; Rückkehrinstanz; } / ** * Koordinaten konfigurieren * * @param x * @param y * @return * / public captchafactory configxy (int x, int y) {instance.xx = x; Instance.yy = y; Rückkehrinstanz; } / ** * Schriftgröße konfigurieren * * @param fontSize * @return * / public captChafactory configFontSize (int fontSize) {instance.fontSize = fontsize; Rückkehrinstanz; } / ** * Font * * * @param fontfamily * @return * / public Captchafactory configFontSize (String fontfamily) {instance.fontfamily = fontfamily; Rückkehrinstanz; } public void write (httpServletRequest-Anforderung, httpServletResponse-Antwort) löst IOException {// den vierstelligen Bestätigungscode in der Sitzung Speichern. MAP CAPTCHA = generate (); String randomCode = (String) captcha.get ("captchacode"); Bufferedimage buffimg = (bufferedimage) captcha.get ("captChaimg"); HttpSession Session = Request.GetSession (); Session.SetAttribute ("Code", RandomCode); // Bilddachung ist verboten. response.setheader ("pragma", "no-cache"); response.setheader ("cache-control", "no-cache"); response.setDateHeader ("läuft", 0); Antwort.SetContentType ("Image/JPEG"); // Ausgabe des Bildes in den Servlet -Ausgangsstrom ausgeben. ServletOutputStream outputStream = response.getOutputStream (); Imageio.Write (Buffimg, "JPEG", OutputStream); outputStream.close (); } public map <String, Object> generate () löscht ioException {// Bildpuffer BufferedImage BuffImg = new bufferedImage (width, Höhe, bufferedImage.type_int_rgb) definieren; Graphics GD = buffimg.getGraphics (); // Setzen Sie die Hintergrundfarbe Gd.setColor (getrandcolor (200, 250)); Gd.FillRect (0, 0, Breite, Höhe); // Setzen Sie die Schriftart, die Größe der Schrift sollte gemäß der Höhe des Bildes bestimmt werden. gd.setfont (neue Schriftart (fontfamily, font.plain, fontsize)); // Erstellen Sie eine zufällige Zahlengeneratorklasse Random Random = New Random (); // Random generiert 40 Interferenzzeilen, wodurch der Authentifizierungscode im Bild weniger wahrscheinlich von anderen Programmen erkannt wird. gd.setColor (getrandcolor (160, 200)); 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); gd.drawline (x, y, x + xl, y + yl); } // RandomCode wird verwendet, um zufällig generierte Verifizierungscodes zu speichern, damit Benutzer nach der Anmeldung. StringBuffer randomCode = new StringBuffer () überprüfen können; int rot = 0, grün = 0, blau = 0; // Erzeugen Sie zufällig Längenüberprüfungscodes. für (int i = 0; i <Länge; i ++) {// Erhalten Sie die zufällig generierte Verifizierungscodenummer. String code = string.ValueOf (code_sequence [random.nextint (36)]); // Erzeugen Sie zufällige Farbkomponenten, um den Farbwert zu konstruieren, damit der Farbwert jeder Ziffernausgabe unterschiedlich ist. rot = random.nextint (110); grün = random.nextint (110); Blue = random.Nextint (110); // Zeichnen Sie den Verifizierungscode mit der zufällig generierten Farbe in das Bild. gd.setColor (neue Farbe (rot + 20, grün + 20, blau + 20)); gd.drawstring (Code, i * xx + 6, yy); // Kombinieren Sie die generierten Zufallszahlen miteinander. randomCode.Append (Code); } Map <string, Object> retval = new HashMap <> (); retval.put ("captchacode", randomcode.toString ()); retval.put ("captchaimg", buffimg); Rückkehr; } / ** * Erhalten Sie eine zufällige Farbe mit einem Bereich * * @param fc * min * @param bc * maximum * @return color * / private color getrandcolor (int fc, int bc) {random randomy randal = 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); Neue Farbe zurückgeben (r, g, b); }}Das Obige dreht sich alles um diesen Artikel, ich hoffe, es wird für das Lernen aller hilfreich sein.