Cet article partage l'exemple de code généré par le code de vérification Java pour votre référence. Le contenu spécifique est le suivant
package com.gonvan.component.captcha; Importer java.awt. *; Importer java.awt.image.bufferedImage; import java.io.ioexception; import java.util.hashmap; import java.util.map; import java.util.random; import javax.imageio.imageio; import javax.servlet.servletOutputStream; import javax.servlet.http.httpservletRequest; import javax.servlet.http.httpSession; / ** * Créé par Yuerzm le 2016/3/14. * / classe publique captChafactory {private static final char [] code_sequence = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" .tocharArray (); private static final int default_width = 60; private static final int default_height = 20; private static final int default_code_len = 4; private static final int default_code_x = 13; private static final int default_code_y = 16; private static final int default_font_size = 18; chaîne finale statique privée default_font_family = "Times New Roman"; instance de captchafactory statique privée = new CAPTCHAFACTORY (); private int width = default_width; // Définissez la largeur private int height = default_height; // Définissez la hauteur private int longueur = default_code_len; // Définissez le nombre de codes de vérification affichés sur l'image privée int xx = default_code_x; // Définissez le code de vérification x coordonnée privée int yy = default_code_y; // Définissez les coordonnées du code de vérification Y affichées sur l'image private int fontsize = default_font_size; // Définissez la taille de la police du code de vérification affiché sur l'image Private String fontfamily = Default_font_family; // Définissez le nombre de code de vérification affichés sur l'image privée captchafactory () {} public static captchafactory getInstance () {return instance; } / ** * Configurer la largeur et la hauteur * * @param w * @param h * @return * / public captchafactory configWidthandHeight (int w, int h) {instance.width = w; instance.height = h; retour d'instance; } / ** * Configurer les coordonnées * * @param x * @param y * @return * / public captchafactory configXy (int x, int y) {instance.xx = x; instance.yy = y; retour d'instance; } / ** * Configurer la taille de la police * * @param FonTSize * @return * / public captChafactory ConfigFontize (int FonTSize) {instance.fontsize = FonTSize; retour d'instance; } / ** * Configurer Font * * @param fontfamily * @return * / public captChafactory configFontize (String FontFamily) {instance.fontfamily = FontFamily; retour d'instance; } public void write (HttpServLetRequest Request, HttpServletResponse Response) lève ioException {// Enregistrez le code de vérification à quatre chiffres à la session. Map captcha = generate (); String randomcode = (string) captcha.get ("captChacode"); BufferedImage BuffImg = (BufferedImage) captcha.get ("captchaimg"); HttpSession session = request.getSession (); session.setAttribute ("code", randomcode); // La mise en cache d'image est interdite. Response.sethEader ("Pragma", "No-Cache"); Response.sethEader ("Cache-Control", "No-cache"); réponse.setDateHeader ("expire", 0); réponse.setContentType ("Image / JPEG"); // Sortie de l'image vers le flux de sortie du servlet. ServletOutputStream OutputStream = Response.getOutputStream (); ImageIo.Write (Buffimg, "JPEG", OutputStream); outputStream.close (); } Public Map <String, Object> Generate () lève IOException {// Define Image Buffer BufferedImage BuffImg = new BufferedImage (Width, Height, BufferedImage.Type_int_rgb); Graphics gd = buffimg.getGraphics (); // Définit la couleur d'arrière-plan gd.setColor (getrandcolor (200, 250)); gd.fillrect (0, 0, largeur, hauteur); // Réglez la police, la taille de la police doit être déterminée en fonction de la hauteur de l'image. gd.setfont (nouvelle police (FontFamily, Font.Plain, FonTSize)); // Créer une classe de générateur de nombres aléatoires aléatoire aléatoire = new random (); // Random génère 40 lignes d'interférence, ce qui rend le code d'authentification dans l'image moins susceptible d'être détecté par d'autres programmes. gd.setColor (getrandcolor (160, 200)); pour (int i = 0; i <155; i ++) {int x = random.nextint (largeur); int y = random.nextint (hauteur); int xl = random.nextint (12); int yl = random.nextint (12); gd.Drawline (x, y, x + xl, y + yl); } // RandomCode est utilisé pour enregistrer des codes de vérification générés de manière aléatoire afin que les utilisateurs puissent vérifier après la connexion. StringBuffer randomcode = new StringBuffer (); int rouge = 0, vert = 0, bleu = 0; // Générez des codes de vérification de longueur au hasard. pour (int i = 0; i <length; i ++) {// Obtenez le numéro de code de vérification généré au hasard. String code = string.valueof (code_Sequence [random.nextint (36)]); // Générez des composants de couleur aléatoires pour construire la valeur de couleur, de sorte que la valeur de couleur de chaque sortie de chiffre sera différente. Red = random.nextint (110); vert = random.nextint (110); bleu = random.nextint (110); // Dessinez le code de vérification dans l'image avec la couleur générée aléatoirement. gd.setColor (nouvelle couleur (rouge + 20, vert + 20, bleu + 20)); gd.Drawstring (code, i * xx + 6, yy); // Combinez les nombres aléatoires générés ensemble. randomcode.append (code); } Map <string, objet> retval = new HashMap <> (); retval.put ("captChacode", randomcode.toString ()); retval.put ("Captchaimg", Buffimg); retour retour; } / ** * Obtenez une couleur aléatoire étant donné une plage * * @param fc * min * @param bc * maximum * @return Color * / private couleur 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); retourner une nouvelle couleur (r, g, b); }}Ce qui précède concerne cet article, j'espère qu'il sera utile à l'apprentissage de tout le monde.