Comment Java implémente la fonction de vérification du code de vérification? Dans la vie quotidienne, les codes de vérification peuvent être vus partout, et il peut protéger la sécurité du compte dans une certaine mesure. Alors, comment l'a-t-il réalisé?
Java implémente la fonction de vérification du code de vérification en fait très simple: une classe graphique est utilisée pour dessiner des lettres sur le tableau art, sélectionnez au hasard un certain nombre de lettres pour les générer au hasard, puis générer de manière aléatoire plusieurs lignes d'interférence sur le tableau art.
Tout d'abord, écrivez un code de vérification pour générer une classe d'aide, qui est utilisée pour dessiner des lettres aléatoires:
import java.awt.color; Importer java.awt.font; import java.awt.graphics; Importer java.awt.image.bufferedImage; Importer java.io.ioException; import java.io.outputStream; import java.util.random; import javax.imageio.imageio; Classe finale publique Graphichelper {/ ** * Renvoie le code de vérification généré sous la forme d'une chaîne, et publiez une image en même temps * * @param largeur * la largeur de l'image * @param height * La hauteur de l'image * @param imgtype * type d'image * @param output * Stream Image Structial (String) * Public Static Wid Create) * @return width, Retourne le code de vertification généré (String) * STRATIQUE PUBLICE (Final INTrth, Retournez le code de vertise généré) * STRINE) Final int height, final String imgType, OutputStream Output) {StringBuffer sb = new StringBuffer (); Aléatoire aléatoire = nouveau aléatoire (); BufferedImage Image = new BufferedImage (largeur, hauteur, bufferedImage.type_int_rgb); Graphics graphic = image.getGraphics (); graphic.setColor (Color.getColor ("f8f8f8")); Graphic.Fillrect (0, 0, largeur, hauteur); Couleur [] couleurs = nouvelle couleur [] {color.blue, colore.gray, colore.green, colore.red, colore.black, colore.orange, colore.cyan}; // Générez des lignes d'interférence sur le "Artboard" (50 est le nombre de lignes) pour (int i = 0; i <50; i ++) {graphic.setColor (couleurs [random.nextint (couleurs.length)]); final int x = random.nextint (largeur); final int y = random.nextint (hauteur); final int w = random.nextint (20); final int h = random.nextint (20); final int signa = random.nextboolean ()? 1: -1; final int SignB = random.nextBoolean ()? 1: -1; graphic.Drawline (x, y, x + w * signa, y + h * SignB); } // dessiner les lettres sur le "Artboard" Graphic.setfont (New Font ("Comic Sans MS", Font.Bold, 30)); pour (int i = 0; i <6; i ++) {final int temp = random.nextint (26) + 97; String s = string.valueof ((char) temp); SB.APPEND (S); graphic.setColor (couleurs [random.nextint (couleurs.length)]); Graphic.Drawstring (s, i * (largeur / 6), hauteur - (hauteur / 3)); } graphic.dispose (); essayez {imageo.write (image, imgType, sortie); } catch (ioException e) {e.printStackTrace (); } return sb.toString (); }} Ensuite, créez un servlet pour fixer la taille de l'image, traiter les scénarios d'utilisation des codes de vérification et capturer le code de vérification généré par la page (le code QR capturé est cohérent avec le code de vérification entré par l'utilisateur avant de pouvoir être passé).
Importer java.io.ioException; import java.io.outputStream; Importer javax.servlet.servletException; Importer javax.servlet.annotation.webservlet; import javax.servlet.http.httpservlet; Importer javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse; Importer javax.servlet.http.httpSession; @Webservlet (urlPatterns = "/verify/regist.do") public class VerifyCodeServlet étend httpservlet {private static final SerialVersionUID = 3398560501558431737l; @Override Protected Void Service (HttpServLetRequest Request, HttpServletResponse Response) lève ServletException, ioException {// Obtenez l'objet de session correspondant à la demande actuelle httSession session = request.getSession (); // Obtenez URI à partir de la demande (identifiant de ressource uniforme) URI = request.getRequeSturi (); System.out.println ("Hello:" + Uri); Largeur int finale = 180; // Largeur d'image final int hauteur = 40; // Hauteur d'image final chaîne imgType = "jpeg"; // Spécifiez le format d'image (sans se référer au type MIME) OutputStream Output = Response.getOutputStream (); // Obtenez le flux de sortie qui peut renvoyer l'image au client // (Stream BYTE) // Créez une image de code de vérification et renvoyez la chaîne sur la chaîne d'image Code = Graphichelper.Create (largeur, hauteur, imgtype, sortie); System.out.println ("Contenu du code de vérification:" + code); // Créer une association entre URI et le code de vérification correspondant (stocké dans les attributs de l'objet de session actuel) session.setAttribute (URI, code); System.out.println (session.getAttribute (URI)); }} Ensuite, écrivez une page d'enregistrement HTML pour la vérifier:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Register</title> <link rel="stylesheet" href="styles/general.css" > <link rel="stylesheet" href="styles/cell.css"> <link rel="stylesheet" href="styles/form.css"> <script type = "text / javascript" src = "js / réf.js"> </ script> <style type = "text / css"> .logo-contrainer {margin-top: 50px; } .logo-container img {width: 100px; } .Message-Container {hauteur: 80px; } .Link-Container {hauteur: 40px; hauteur de ligne: 40px; } .link-container a {text-decoration: aucun; } </ style> </ head> <body> <div> <form action = "/ wendao / regist.do" metheth = "post"> <div> <! - le formulaire d'enregistrement start -> <div> <span> <i> </i> </span> <span style = "text-adign: Left;"> <intrut type = "text" name = "username" lieuxholder = "s'il vous plaît entrer un nom d'usage"> </ SPPERD> "username" PlaceHolder = " <v> <span> <i> </i> </span> <span> <i> </i> </span> <span> <i> </i> </span> <span> <i> </i> </span> <span> <i> </i> </span> <span> <entrée type = "mot de passe" name = "Confirmer" PlaceHolder = "Please Motways"> </pannet> type = "mot de passe" name = "confirm" placeholder = "Veuillez confirmer le mot de passe"> </span> </ div> <div> <span> <entrée type = "text" name = "VerifyCode" placeholder = "s'il vous plaît entrez le code de vérification"> </span> <span style = "text-adign: Center;"> <img Src = "/ Demify / Verify / Regist.Do" sur "sur" Myrefersh (that) " </span> </ div> <div style = "border: non;"> <span style = "text-adign: Left"> <input type = "reset" value = "reset"> </span> <span style = "text-align: droit;"> <entrée type = " </html>L'effet est le suivant:
Lorsque nous cliquons pour actualiser la page, le code de vérification changera également, mais lorsque nous ne pouvons pas voir le code de vérification clairement, nous actualiserons tant que nous cliquerons sur le code de vérification. De cette façon, un rafraîchissement local peut être réalisé à l'aide de JavaScript.
Dans <img src = "/ démo / vérification / régist.do">, ajoutez un point d'interrogation et une chaîne de numéros de suffixe. En cas de rafraîchissement, laissez les numéros de suffixe continuer à changer et le code de vérification formé continuera également de changer. Une méthode que nous pouvons utiliser consiste à remplacer les numéros de suffixe par la date. La date obtient l'heure locale et le temps change à tout moment, ce qui garantit que le code de vérification de rafraîchissement peut changer à tout moment.
Le code est le suivant:
fonction myRefersh (e) {const source = e.src; // Obtenez le contenu dans le src //console.log d'origine ("Source:" + Source); var index = source.indexof ("?"); // Trouvez le premier emplacement d'apparence (return -1 s'il n'existe pas) //console.log ("index:" + index); if (index> -1) {// si il est trouvé?, Entrez le var interne S = Source.SubString (0, index); // Intercepter le contenu avant l'index de la source (index et le contenu après index sont rejetés) //console.log ("S:" + S); var date = new Date (); // Créer une instance de l'objet date var heure = date.getTime (); // obtient la valeur de la milliseconde correspondant à cette heure à partir de l'instance nouvellement créée de l'objet de date e.src = s + "? Time =" + time; // remplacer l'adresse à queue sur src //console.log (e.src); } else {var date = new Date (); e.src = source + "? time =" + date.getTime (); }}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.