L'origine d'un code de vérification
Dans le développement de projets Web, afin d'empêcher certaines personnes d'utiliser des outils automatiques (tels que les machines d'enregistrement automatique) pour traiter les données par lots, des codes de vérification sont ajoutés pour vérifier dans différents nœuds fonctionnels pour obtenir l'effet du blocage du logiciel automatique
Les applications les plus classiques sont: le code de vérification graphique d'enregistrement du site Web; Ensuite, via la technologie Java, combinée à Servlet, un programme de code de vérification graphique requis pour l'enregistrement du site Web est mis en œuvre, pour votre référence.
2. Implémentez l'effet du code de vérification graphique de la page d'enregistrement
1. Créez un projet Web: java_servlet_verifyimg
2. Créez un contrôleur qui génère automatiquement des codes de vérification de graphique - VerifyImgServlet
package com.phome.util; importer java.awt.color; import java.awt.font; import java.awt.graphics2d; import java.awt.image.bufferedimage; import java.io.ServertException; import java.util.random; import javax.servlet.servletException; Importer; javax.servlet.servletOutStream; import javax.servlet.http.httpservlet; import javax.servlet.http.httSservletRequest; Importer javax.servlet.http.httpservletReSpense; importation com.sun.image.codec.jpeg.jpegcodec; com.sun.image.codec.jpeg.jpegImageEncoder; classe publique VerifyImgServlet étend httpservlet {/ ** * * / private statique final SerialversionUID = 1l; // Définit un dictionnaire de caractères aléatoires. 0,o,1,I, etc. public static final char[] CHARS = { '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'a', 'b', 'c', `` d ',' l ',' f ',' g ',' h ',' j ',', ',' L ',', ',', ',', ',', ',' s ' 'x', 'y', 'z'}; public statique aléatoire aléatoire = nouveau aléatoire (); // Object Nombre aléatoire public static static getrandomString () {stringBuffer buffer = new StringBuffer (); // String cache pour (int i = 0; i <6; i ++) // six boucles pour obtenir des caractères {buffer.append (chars [random.nextint (chars.length)]); // Prenez un caractère au hasard à la fois} return buffer.toString (); } public static couleur getrandomColor () {return new Color (random.nextint (255), random.nextint (255), random.nextint (255)); } Couleur statique publique getReversEColor (couleur C) {return new Color (255 - C.GetTred (), 255 - C.GetGreen (), 255 - C.GetBlue ()); } Couleur statique publique getReversEColor (couleur C) {return new Color (255 - C.GetTred (), 255 - C.GetGreen (), 255 - C.GetBlue ()); } public void doGet (requête httpservletRequest, réponse httpservletResponse) lève ServletException, ioException {réponse.setContentType ("image / jpeg"); // Définissez le type de sortie sur Not Omit String RandomString = getRandomString (); // appelle la méthode pour générer une chaîne aléatoire pour obtenir et accepter la chaîne aléatoire request.getSession (true) .setAttribute ("randomString", randomString); // Stockez la chaîne dans la session int width = 100; // Largeur d'image int hauteur = 30; // Color de couleur d'image = getRandomColor (); // Obtenez une couleur aléatoire pour la couleur d'arrière-plan couleur inverse = getReverseColor (couleur); // Couleur inversée pour la couleur du premier plan BufferedImage BI = new BufferedImage (largeur, hauteur, tampondImage.type_int_rgb); // Créer une image couleur graphics2d g = bi.creategraphics (); // Obtenez l'objet de dessin g.setfont (new Font (font.sans_serif, font.bold, 16)); // définir la police g.setColor (couleur); // définir la couleur g.fillrect (0, 0, largeur, hauteur); // dessine l'arrière-plan g.setColor (revers); // Définit la couleur g.drawstring (RandomString, 18, 20); // dessine des caractères aléatoires pour (int i = 0, n = random.nextint (100); i <n; i ++) // dessinez jusqu'à 100 points de bruit {g.drawrect (random.nextint (width), random.nextint (hauteur), 1, 1); // Points de bruit aléatoires} servletOutputStream out = réponse.getOutputStream (); // Il semble obtenir le flux de sortie jpegImageEncoder Encoder = jPegCodec.CreateJpeGencoder (Out); // Encodeur Encoder.Encode (BI); // Encodant l'image out.flush (); // Sortie au client} public void doPost (requête HttpServletRequest, réponse httpservletResponse) lève ServletException, ioException {this.doget (request, réponse); }}3. Créer un contrôleur de registre - Registservlet
package com.phome.servlet; import java.io.ioexception; import javax.servlet.servletException; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletRequest; import; javax.servlet.http.httpservletResponse; Importer javax.servlet.http.httpSession; / ** * Contrôleur d'enregistrement * @author zuoyi * * / public class Registservlet étend httpservlet {/ ** * * / / privé static final Serialversionuid = 1l; @Override Protected void doGet (httpSservletRequest req, httpservletResponse resp) lève ServletException, ioException {this.dopost (req, resp); } @Override Protected void doPost (httpServletRequest req, httpServletResponse resp) lève ServletException, ioException {// Obtenez le code de vérification aléatoire d'enregistrement de la session httpSession session = req.getSession (); String randomString = (string) session.getAttribute ("randomString"); // Obtenez le code de vérification de l'entrée de l'utilisateur String inputRandomString = req.getParameter ("randomstr"); // Assurez-vous que le code de vérification est passé et l'enregistrez simule si (RandomString.equals (inputRandomString)) {req.setAttribute ("resinfo", "Félicitations! L'enregistrement a réussi!"); } else {req.setAttribute ("resinfo", "Le code de vérification est incorrectement entré, veuillez vérifier et vous inscrire à nouveau!"); } // Si l'enregistrement est réussi ou a échoué, passez à la page Result.jsp pour afficher les résultats d'enregistrement. . . req.getRequestDispatcher ("result.jsp"). Forward (req, resp); }}4. Configurer le servlet
<? xml version = "1.0" Encoding = "utf-8"?> <web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://java.sun.com/xml/ns/javaee" XSI: ScheMalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id = "webapp_id =" 3.0 " <Display-name> simg </ display-name> <! - Configurer le servlet d'enregistrement des utilisateurs -> <Serplet> <Servlet-Name> RegistServlet </vrlett-name> <Serplet-Class> com.phome.servlet.Registservlet </ servlet-class> </ servlet> <servlet-mapping> <servlet-name> Registrlet </servlet-name> <URL-Pattern> /Regist.Action </ url-Pattern> </ Servlet-Mapping> <! - Configurer le code de vérification du graphique Servlet -> <Serplet> <Serplet-Name> VerifyImg </ Servlet-Name> <Servlet-Class> com.phome.servlet.verifyImgServlet </vlass> </ servlet> <servlet-mapping> <servlet> <Serplet-Name> VerifyImg </vrlet-name> <Url-Pattern> /VifyImg.action </url-Pattern> </ Servlet-Mapping> <Welcome-File-List> <Deen welcome> index.html </venke-file> </ven welcome-file> index.htm </ven welcome-file> </ven welcome> index.jsp </ken wreencome> <Lelcome-File> Default.htm </ Welcome-File> <Eloyal-File> Default.jsp </venke-file> </ Welcome-File-list> </ web-app>
5. Créer une page de test de vue d'enregistrement - Regist.jsp
<% @ Page Language = "Java" import = "java.util. *" Pageencoding = "gb18030"%> <% String path = request.getContextPath (); String basepath = request.getscheme () + ": //" + request.getServername () + ":" + request.getServer () + path + "/"; "- // w3c // dtd html 4.01 transitional // en"> <html> <adref> <base href = "<% = basepath%>" rel = "external nofollow" rel = "external nofollow"> <itle> mon jsp 'index.jsp' darning page </ title> <méta http-equiv = "Pragma" contenu = "no-cache> <méta http-equie http-equiv = "cache-control" contenu = "no-cache"> <meta http-equiv = "expires" contenu = "0"> <meta http-equiv = "keywords" contenu = "keyword1, keyword2, keyword3"> <meta http-equiv = "description" contenu = "c'est ma page"> <! type = "text / css" href = "Styles.css" rel = "external nofollow" rel = "external nofollow"> -> </ head> <body> <formiste action = "$ {pagecontex type = "text" name = "mot de passe" /> <br /> Veuillez saisir le code de vérification pour enregistrer: <img src = "$ {pagecontex 5.1 Créer une page de résultat d'enregistrement - result.jsp
<% @ Page Language = "Java" import = "java.util. *" Pageencoding = "gb18030"%> <% String path = request.getContextPath (); String basepath = request.getscheme () + ": //" + request.getServername () + ":" + request.getServer () + path + "/"; "- // w3c // dtd html 4.01 transitional // en"> <html> <adref> <base href = "<% = basepath%>" rel = "external nofollow" rel = "external nofollow"> <itle> mon jsp 'index.jsp' darning page </ title> <méta http-equiv = "Pragma" contenu = "no-cache> <méta http-equie http-equiv = "cache-control" contenu = "no-cache"> <meta http-equiv = "expires" contenu = "0"> <meta http-equiv = "keywords" contenu = "keyword1, keyword2, keyword3"> <meta http-equiv = "description" contenu = "c'est ma page"> <! type = "text / css" href = "Styles.css" rel = "external nofollow" rel = "external nofollow"> -> </ head> <body> $ {requestscope.resinfo} </ body> </html>6. Test
(1) a. Ouvrez le navigateur et entrez l'adresse de test: http: // localhost: 8080 / java_servlet_verifyimg; La page illustrée dans la figure ci-dessous apparaît
né Entrez le compte d'enregistrement, le mot de passe et le code de vérification et cliquez sur Regist pour soumettre
c. Résultats des tests, passez à la page d'enregistrement de transfert, ce qui incite à ce que l'enregistrement soit réussi
(2) Ouvrez la page d'inscription
Entrez le code d'enregistrement d'erreur
Page des résultats des tests
sur!
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.