Cet exemple partage le code spécifique du code de vérification généré au hasard pour votre référence. Le contenu spécifique est le suivant
import java.awt.color; import java.awt.font; import java.awt.graphics2d; import java.awt.image.bufferedImage; import java.io.ioexception; import java.util.random; javax.servlet.servletOutStstream; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse; Importer javax.servlet.http.httpSession; public Class Randontrassement HtredSedS.Servlet.http. {/ *** Constructeur de l'objet. * / Public RandImage () {super (); } private int imgwidth = 0; // largeur d'image privé int imgheight = 0; // Image Height private int codeCount = 0; // le nombre de caractères dans l'image privée int x = 0; Int privé Fontheight; // la hauteur de la police privée int Codey; Fontstyle de cordes privées; // Style de police // ID de sérialisation Évitez le double SerialVersionUID final privé statique privé = 128554012633034503l; / ** * Paramètres de configuration d'initialisation * / public void init () lève Servlexception {// width String strwidth = "200"; // chaîne de hauteur strheight = "80"; // Nombre de caractères string strCodeCount = "5"; // font fontstyle = "Times New Roman"; // convertir les informations configurées en un essai numérique {if (strwidth! = Null && strwidth.length ()! = 0) {imgWidth = Integer.Parseint (stwidth); } if (strheight! = null && strheight.length ()! = 0) {imgheight = Integer.ParseInt (strheight); } if (strCodeCount! = null && strCodeCount.Length ()! = 0) {codeCount = Integer.ParseInt (strCodeCount); }} catch (NumberFormatexception e) {e.printStackTrace (); } x = imgwidth / (codeCount + 1); // Espacement des caractères fonTheight = imgheight - 2; // Font Hight Codey = Imgheight - 12; // Hauteur de code} VOID ProcessRequest protégé (demande httpServletRequest, réponse httpServletResponse) lève Servlexception, ioException {// Strony Stream set Response.SetContentType ("Image / JPEG"); // Format de sortie Response.sethEader ("Pragma", "No-Cache"); // pas de régénération de cache. // pas de régénération de cache Response.setDateHeader ("expire", 0); // Aucune invalidation de cache n'est également mise en cache httpSession Session = request.getSession (); // Get Session Session // Créer une image dans la mémoire BufferedImage Image = new BufferedImage (imgwidth, imgheight, bufferedImage.type_int_rgb); // Obtenez le contexte graphique Graphics2d G = Image.CreateGraphics (); // générer un aléatoire aléatoire aléatoire = nouveau aléatoire (); // Classe aléatoire // Définit la couleur d'arrière-plan du rectangle g.setColor (color.white); // Remplissez le rectangle rect à White G.Fillrect (0, 0, imgwidth, imgheight); // Définit la police de la frontière g.setfont (nouvelle police (Fontstyle, font.plain + font.italic, fonTheight)); // Réglez la couleur de la bordure g.setColor (nouvelle couleur (55, 55, 12)); // dessine la bordure g.drawrect (0, 0, imgwidth - 1, imgheight - 1); // Générer au hasard 160 lignes d'interférence, ce qui rend le code d'authentification dans l'image pas facile à détecter par d'autres programmes g.setColor (GetrandColor (160, 200)); pour (int i = 0; i <160; i ++) {int x = random.nextint (imgWidth); int y = random.nextint (imgheight); int xl = random.nextint (12); int yl = random.nextint (12); G.Drawline (x, y, x + xl, y + yl); } // Prenez la chaîne de code d'authentification générée aléatoire (numéro à 4 chiffres) srand = ""; int rouge = 0, vert = 0, bleu = 0; for (int i = 0; i <codeCount; i ++) {// Changez pour générer des caractères aléatoires de codecow // la nouvelle couleur via RGB trois couleurs rouge = random.nextint (255); vert = random.nextint (255); bleu = random.nextint (255); // histoires pour obtenir un nombre de 0 1 2 int wordType = random.nextint (3); // histoires pour obtenir 3 nombres entre 0-2 char retword = 0; // 0 Number 1 LETTRE MINOLASE 2 COMPITATEUR DE LETTRE CAPITAL (WordType) {Case 0: retword = this.getSingLenumberChar (); // Obtenez la pause de type Char de 0-9; Cas 1: retword = this.getLowerorupperChar (0); // Obtenez la pause de type Charcasse en minuscules; Cas 2: retword = this.getLowerorupperChar (1); // Obtenez la pause de type Char-CHAR; } srand + = string.valueof (retword); // Obtenez les caractères aléatoires obtenus g.setColor (nouvelle couleur (rouge, vert, bleu)); // Définissez une couleur g.drawstring (string.valueof (retword), 2+ (i) * x, codey); // Écrivez les caractères dans la position correspondante dans l'image} // Enregistrez le code d'authentification dans Session Session.SetAttribute ("Rand", SRAND); // Enregistrez les caractères aléatoires obtenus dans la réponse de session, et vous pouvez appeler // l'image prend effet g.dispose (); // Libérez l'objet G servletOutputStream ResponseOutputStream = Response.getOutputStream (); // STRIEF STRIEUX // Sortie Image sur la page ImageIo.Write (image, "JPEG", ResponseOutputStream); // Sortie au format JPEG // Fermez le flux d'entrée ci-dessous! ResponseOutputStream.flush (); // frais et fermer le flux ResponseOutputStream.close (); } Couleur getrandColor (int fc, int bc) {// donne une couleur aléatoire aléatoire = 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); } Protected void doGet (HttpServLetRequest Request, HttpServletResponse Response) lève ServletException, ioException {processRequest (demande, réponse); } Protected void doPost (httpsservletRequest request, httpservletResponse réponse) lève ServletException, ioException {processRequest (request, réponse); } // Convertir un numéro aléatoire entier en char pour retourner char à chargetLenumberchar () {random random = new random (); int numberResult = random.nextint (10); int ret = NumberResult + 48; // Lors de la conversion du caractère «0» en code ASCall, il s'agit de 48 retour (char) ret; } // Obtenez 26 caractères private char getlowerorupperchar (int upper) {random random = new random (); int numberResult = random.nextint (26); int ret = 0; if (upper == 0) {// minuscules ret = nombreResult + 97; } else if (upper == 1) {// Capital ret = NumberResult + 65; } return (char) ret; }} Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.