Tout le monde connaît le code de vérification et je n'ai pas besoin d'en dire plus sur sa fonction. Si vous n'êtes pas très clair, veuillez vous référer à l'explication dans Baidu Encyclopedia. Généralement, la génération de codes de vérification consiste à générer des caractères aléatoirement (nombres, lettres ou caractères chinois, etc.), puis dessiner ces caractères générés dans une image, puis ajoutant des éléments interférents à l'image, tels que diverses lignes, etc. OK, parlons un non-sens et lisons-le:
Page de connexion simple (le code n'est pas complet, seulement la pièce de code de vérification)
<% @ Page Language = "Java" Import = "Java.util. *" Pageencoding = "UTF-8"%> <! Doctype Html public "- // w3c // dtd html 4.01 transitional // en"> <html> Data-filTtered = "Filter"> </span> <span style = "White-Space: Pre"> </span> // JS Fonction Pour rafraîchir le code de vérification <span style = "White-Space: Pre"> </span> Fonction Changecode () {<pan style = "White-Space: Pre"> </span> var imgnode = document.getElementyId ("VIMG"); <span style = "blanc-espace: pre"> </span> // Recharger le code de vérification pour atteindre le but de rafraîchissant <span style = "white-space: pre"> </span> imgnode.src = "servlet / authimageservlet? t =" + math.random (); // Empêcher les problèmes de cache du navigateur <span style = "blanc-espace: pre"> </span>} </ script> </ head> <body> <form action = "katkservlet" metheth = "post"> <label> Code de vérification d'entrée </ labe> <br/> <entrée type = "text" name = "randomcode" /> <img id = "vimg" onclick = "changode ();"); src = "Servlet / AuthimageServlet"> <br/> <input type = "soumi" value = "soumi"> </ form> </ body> </html>Via session.getAttribute ("rand"), le code de vérification généré est obtenu, puis comparé à l'entrée utilisateur, puis le traitement correspondant est effectué en fonction des résultats de comparaison.
Générer du code de vérification via le servlet:
Package Com.util.servlet; import java.awt.color; Importer java.awt.font; import java.awt.graphics; Importer java.awt.image.bufferedImage; Importer java.io.ioException; import java.util.random; import javax.imageio.imageio; Importer javax.servlet.servletException; import javax.servlet.http.httpservlet; Importer javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse; Importer javax.servlet.http.httpSession; classe publique AuthImageServlet étend httpServlet {private static final string contenu_type = "text / html; charset = gb2312"; // Définissez la taille des lettres, Private Font Mfont = New Font ("Times New Roman", Font.Plain, 17); public void init () lève ServletException {super.init (); } Color 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); int b = fc + random.nextint (bc-fc); retourner une nouvelle couleur (r, g, b); } public void Service (demande httpservletRequest, réponse httpservletResponse) lève ServletException, ioException {réponse.sethEader ("pragma", "non-cache"); Response.sethEader ("Cache-Control", "No-cache"); réponse.setDateHeader ("expire", 0); // indique que la réponse générée est la réponse d'image.setContentType ("image / jpeg"); Int largeur = 100, hauteur = 18; BufferedImage Image = new BufferedImage (largeur, hauteur, bufferedImage.type_int_rgb); Graphiques g = image.getGraphics (); Aléatoire aléatoire = nouveau aléatoire (); g.setColor (getrandcolor (200 250)); g.filrect (1, 1, largeur-1, hauteur-1); g.setColor (nouvelle couleur (102,102,102)); G.Drawrect (0, 0, largeur-1, hauteur-1); g.setfont (mfont); g.setColor (getRandColor (160 200)); // dessine une ligne aléatoire pour (int i = 0; i <155; i ++) {int x = random.nextint (largeur - 1); int y = random.nextint (hauteur - 1); int xl = random.nextint (6) + 1; int yl = random.nextint (12) + 1; G.Drawline (x, y, x + xl, y + yl); } // dessinez une ligne aléatoire de l'autre direction pour (int i = 0; i <70; i ++) {int x = random.nextint (width - 1); int y = random.nextint (hauteur - 1); int xl = random.nextint (12) + 1; int yl = random.nextint (6) + 1; G.Drawline (x, y, x - xl, y - yl); } // générer des nombres aléatoires et convertir les nombres aléatoires en lettres string srand = ""; pour (int i = 0; i <6; i ++) {int itmp = random.nextint (26) + 65; char ctmp = (char) itmp; srand + = string.valueof (ctmp); g.setColor (nouvelle couleur (20 + random.nextint (110), 20 + random.nextint (110), 20 + random.nextint (110))); G.Drawstring (String.ValueOf (CTMP), 15 * I + 10,16); } HttpSession session = request.getSession (true); session.setAttribute ("rand", srand); g.dispose (); Imageo.write (image, "jpeg", réponse.getOutputStream ()); }}Informations sur la configuration du servlet dans web.xml:
<? xml version = "1.0" encoding = "utf-8"?> <web-app version = "2.5" xmlns = "http://java.sun.com/xml/ns/javaee" xmlns: xsi = "http://www.w3.org/2001/xmlschema instance" XSI: ScheMalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <s servlet> <Servlet-Name> AuthimageSern </vlet-Name> <Vertlet-Class> com.util.servlet.authimageservlet </ servlet-class> </ servlet> <servlet-mapping> <servlet-name> AuthimageServlet </ servlet-name> <url-pattern> / servlet / AuthimageServlet </ url-pattern> </ servlet-mapping> <welcome-file-list> <le bienvenue> index.jsp </ servlet> </ Welcome-File-list> </ web-app>
De cette façon, la fonction de code de vérification est implémentée, ce qui est très simple et pratique. Bien sûr, il existe des moyens plus beaux et rigoureux. Les amis intéressés peuvent étudier en profondeur. Ici, je partagerai avec vous un moyen relativement simple. Tous sont les bienvenus pour me critiquer et me corriger.
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.