Cet article a partagé le code spécifique du code de vérification de connexion Javaweb pour votre référence. Le contenu spécifique est le suivant
utiliser:
Contrôleur: générer du code de vérification
@RequestMapping ("/ user / check.jpg") public void createCode (httpServLetRequest request, httpservletResponse réponse) lance ioException {// informer le navigateur de non-cache. Response.sethEader ("Cache-Control", "No-cache"); Response.Setheader ("Pragma", "-1"); Capchautil util = capchautil.instance (); // Entrez le code de vérification dans la session pour vérifier le code de chaîne = util.getString (); request.getSession (). setAttribute ("code", code); // Sortie sur la page Web imageo.write (util.getImage (), "jpg", réponse.getOutputStream ()); } JSP: Afficher le code de vérification
<img id = "img" src = "<% = baspath%> user / check.jpg" onclick = "refresh ()">
function refresh () {var url = $ ("# basepath"). Val () + "user / check.jpg? nombre =" + math.random (); $ ("# img"). att ("src", url); } vérifier:
Obtenez si le code de la session est conforme au code renvoyé au premier plan
/ ** * Vérification du code Vérification * * @param session * @param code * / private void checkcode (httpSession session, String code) {String codesession = (string) session.getAttribute ("code"); if (StringUtils.Isempty (codesession)) {log.Error ("Aucune information de code de vérification n'a été générée"); lancer un nouveau illégalstateException ("err-01000"); } if (stringUtils.isempty (code)) {log.Error ("Aucune information de code de vérification n'a été remplie"); lancer une nouvelle entreprise ("err-06018"); } if (codesession.equalsignoreCase (code)) {// Le code de vérification est passé} else {log.Error ("Vérification Code Erreur"); lancer une nouvelle entreprise ("err-06019"); }} Outils:
import java.awt.color; Importer java.awt.font; import java.awt.graphics; Importer java.awt.image.bufferedImage; import java.util.random; / ** * outil de génération de code de vérification * @Author Hxl * * / classe publique CAPTCHAUTIL {Image privée BufferedImage; // Image Private String Str; // Code de vérification Code de char statique Private [] = "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPRAYS; public static final string session_code_name = "code"; CAPTCHAUTIL privé () {init (); // Propriété d'initialisation} / * * Get RandomNumutil instance * / public static capchautil instance () {return new CaptChautil (); } / * * Obtenir l'image du code de vérification * / public BufferedImage getImage () {return this.image; } / * * Obtenez le code de vérification de l'image * / public String getString () {return this.str; } private void init () {// créer une image int largeur = 85, hauteur = 20; BufferedImage Image = new BufferedImage (largeur, hauteur, bufferedImage.type_int_rgb); // Obtenez les graphiques de contexte graphique g = image.getGraphics (); // générer un aléatoire aléatoire = nouveau aléatoire (); // définir la couleur d'arrière-plan g.setColor (getrandcolor (200, 250)); G.Fillrect (0, 0, largeur, hauteur); // Définit la police g.setfont (nouvelle police ("Times New Roman", Font.Plain, 18)); // générer au hasard 155 lignes d'interférence, ce qui rend le code d'authentification dans l'image moins susceptible d'être détecté par d'autres programmes g.setColor (GetrandColor (160, 200)); pour (int i = 0; i <155; i ++) {int x = random.nextint (largeur); int y = random.nextint (hauteur); 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 = ""; pour (int i = 0; i <4; i ++) {String rand rand = string.valueof (code [random.nextint (code.length)]); srand + = rand; // montre le code d'authentification dans l'image g.setColor (nouvelle couleur (20 + random.nextint (110), 20 + random.nextint (110))); // La couleur de la fonction d'appel est la même, peut-être parce que la graine est trop proche, vous ne pouvez donc générer directement G.Drawstring (Rand, 13 * i + 6, 16); } // Code de vérification de l'affectation this.str = srand; // L'image prend effet g.dispose (); // ByteArrayInputStream Input = null; // byteArrayOutputStream output = new ByteArrayOutputStream (); // essayez {// imageOutputStream ImageOut = ImageIo.CreateImageOutputStream (output); // imageo.write (image, "jpeg", imageout); // imageout.close (); // input = new bytearrayInputStream (output.toByTearray ()); //} catch (exception e) {// System.out.println ("L'erreur s'est produite lorsque l'image de code de vérification est générée:" + e.toString ()); //} // this.image = entrée this.image = image; / * affecter l'image * /} / * * obtenir une couleur aléatoire pour une plage donnée * / couleur privée 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); retourner une nouvelle couleur (r, g, b); }} Enfin, expliquons: l'intercepteur de connexion doit libérer le chemin pour générer le code de vérification! Login Interceptor doit libérer le chemin pour générer du code de vérification! ! Login Interceptor doit libérer le chemin pour générer du code de vérification! ! ! Dites des choses importantes trois fois ~~
Dernier affichage:
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.