Fonction du code de vérification: Habituellement, lors de la connexion ou de l'enregistrement d'un système, les utilisateurs devront saisir le code de vérification pour distinguer le comportement des utilisateurs du comportement du programme informatique. Le but est d'empêcher l'enregistrement malveillant, la fissuration par mot de passe brute, etc.
Idées d'implémentation de codes de vérification: Utilisez le serveur pour réaliser la fonction de générer des nombres et des lettres de génération de manière aléatoire pour former des images, utilisez la page JSP pour réaliser la fonction de l'affichage des codes de vérification et des codes de vérification de l'entrée de l'utilisateur, puis utilisez la classe de serveur pour obtenir l'entrée de données par l'image et l'utilisateur pour déterminer si les deux données sont cohérentes.
Implémentation de code
1. Écrivez une classe de serveur générée au hasard dans les nombres et l'anglais, code source:
Package Com; Importer java.awt.color; import java.awt.font; importer java.awt.graphics; import java.awt.image.bufferedImage; import java.io.bytearrayoutputStream; import java.io.ioexception; import java.o.printwriter; import javax.image.image.imageio; import javax.servlet.servletException; import javax.servlet.servletOutStream; import javax.servlet.http.httpservlet; importer javax.servlet.http.httpservletRequest; javax.servlet.http.httpSession; la classe publique Logcheck étend httpservlet {public logcheck () {super (); } public void destre () {super.destroy (); } public void doGet (demande httpservletRequest, réponse httpservletResponse) lève ServletException, ioException {doPost (request, réponse); } / * CODE CODE D'implémentation * / public void doPost (requête httpservletRequest, réponse httpservletResponse) lève ServLetException, ioException {réponse.setContentType ("image / jPEG"); HttpSession session = request.getSession (); Int largeur = 60; int hauteur = 20; // Définissez le navigateur pour ne pas mettre en cache cette réponse. Response.sethEader ("Cache-Control", "No-cache"); réponse.setDateHeader ("expire", 0); // Créer une image de mémoire et obtenir le contexte graphique BufferedImage Image = new BufferedImage (largeur, hauteur, bufferedImage.type_int_rgb); Graphiques g = image.getGraphics (); / * * Générer le code de vérification aléatoire * Tableau de caractères qui définit le code de vérification * / String chars = "0123456789AbcDefghijklmnopqrstuvwxyz"; char [] rands = nouveau char [4]; pour (int i = 0; i <4; i ++) {int rand = (int) (math.random () * 36); Rands [i] = Chars.Charats (Rand); } / * * Générer l'image * Draw Background * / g.setColor (nouvelle couleur (0xdcdcdc)); G.Fillrect (0, 0, largeur, hauteur); / * * Générer au hasard 120 points d'interférence * / for (int i = 0; i <120; i ++) {int x = (int) (math.random () * largeur); int y = (int) (math.random () * hauteur); int red = (int) (math.random () * 255); int green = (int) (math.random () * 255); int blue = (int) (math.random () * 255); g.setColor (nouvelle couleur (rouge, vert, bleu)); G.Drawoval (x, y, 1, 0); } g.setColor (Color.Black); g.setfont (nouvelle police (null, font.italic | Font.bold, 18)); // Sortie différents caractères du code de vérification à différentes hauteurs g.drawstring ("" + rands [0], 1, 17); G.Drawstring ("" + Rands [1], 16, 15); G.Drawstring ("" + Rands [2], 31, 18); G.Drawstring ("" + Rands [3], 46, 16); g.dispose (); // Collez l'image au client servletOutputStream sos = réponse.getOutputStream (); ByteArrayOutputStream baos = new ByteArrayOutputStream (); Imageo.write (image, "jpeg", baos); octet [] buffer = baos.toByTearray (); Response.SetContentLength (Buffer.Length); sos.write (tampon); baos.close (); sos.close (); session.setAttribute ("CheckCode", New String (RANDS)); } public void init () lève ServletException {// Mettez votre code ici}} 2. Page utilisée pour afficher le code de vérification :
<% @ Page Language = "Java" import = "java.util. *" Pageencoding = "utf-8"%> <% String path = request.getContextPath (); String basepath = request.getscheme () + ": //" + request.getServerName () + ":" + request.getServer () + path + "/";% "- // w3c // dtd html 4.01 transitional // en"> <html> <ead> <base href = "<% = basepath%>"> <itle> index </ title> <meta http-equiv = "cache-cache-cache" contenu "> <méta http-equiv =" cache-cconstrol "contenu ="> <ETATP-Equiv = "Cache-Crontrol" Contenu = "> <Meta-Equiv =" Cache-Crontrol "Contenu ="> <ETADE " http-equiv = "expires" content = "0"> <meta http-equiv = "keywords" contenu = "keyword1, keyword2, keyword3"> <meta http-equiv = "Description" content = "Ceci est ma page"> <! - <lin <form action = "yanzheng" méthode = "poster"> <input type = "text" name = "name" size = "5" maxLength = "4"> <a href = "index.jsp"> <img src = "logcheck"> </a> <br> <br> <putmlf
3. Utilisé pour vérifier si le code de vérification entré est correct:
package com; import java.io.ioexception; import java.io.printwriter; import javax.jms.session; import javax.servlet.servletException; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletquest; Importer Javax.servlet.http.httpservletquest; Importer Javax.servlet.http. javax.servlet.http.httpservletResponse; import javax.servlet.http.httpSession; import javax.servlet.http.httpSession; public class yanzheng étend httpservlet {public yanzheng () {super (); } public void destre () {super.destroy (); } public void doGet (demande httpservletRequest, réponse httpservletResponse) lève ServletException, ioException {doPost (request, réponse); } / * CORE CODE * / public void doPost (requête HttpServletRequest, réponse httpservletResponse) lève Servlexception, ioException {String info = null; / * Obtenez la valeur d'entrée * / string value1 = request.getParameter ("name"); / * Obtenez la valeur de l'image * / httpSession session = request.getSession (); String Value2 = (String) session.getAttribute ("CheckCode"); / * Comparez les deux valeurs (les lettres sont insensibles au cas) * / if (valeur2.equalSignoreCase (value1)) {info = "Verification Code Input correct"; } else {info = "Erreur d'entrée de code de vérification"; } System.out.println (info); request.setAttribute ("info", info); request.getRequestDispatcher ("/ login.jsp"). Forward (demande, réponse); } public void init () lève ServletException {// Mettez votre code ici}}4. Afficher l'interface de structure d'entrée (si le code de vérification d'entrée est correct):
<% @ Page Language = "Java" import = "java.util. *" Pageencoding = "utf-8"%> <% 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%>"> <itle> mon jsp 'login.jsp' de départ de la page </ title> <meta http-equiv = "cache" not-cache "> <méta http-equiv =" Cache "not-cache"> <méta http-equiv = "Cache-Control"> <méta http-equiv = "Cache-Control"> <méta http-equiv = "Cache-Control"> <méta http-equiv = "Cache-Control"> <Meta HTTP-EQUIV = "CACHEL content = "no-cache"> <meta http-equiv = "expires" content = "0"> <meta http-equiv = "keywords" contenu = "keyword1, keyword2, keyword3"> <meta http-equiv = "description" content = "c'est ma page"> <! href = "Styles.css"> -> </ head> <body> <% = request.getAttribute ("info")%> </ body> </html>5. Structure du projet et captures d'écran d'effet:
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.