Je crois que tout le monde connaît les codes de vérification. Que vous postuliez pour un compte ou que vous vous connectez dans certains cas, vous devrez saisir le code de vérification. Après les statistiques, la probabilité de passer avec succès le code de vérification en une vérification est de 90%, ce qui n'est pas élevé. Tant de gens douteront certainement la nécessité de cette conception qui réduit l'expérience utilisateur, mais Hegel a déclaré: Tout ce qui est raisonnable est réaliste; Tout ce qui est réaliste est rationnel. Ensuite, découvrons le code de vérification.
Le code de vérification est un programme public entièrement automatique qui distingue si un utilisateur est un ordinateur ou une personne. Il est utilisé pour empêcher la fissuration de mot de passe malveillante, le balayage des billets et les inondations de forum, et empêcher les pirates de se connecter constamment grâce à la fissuration par force brute. Il est utilisé dans les banques, les communautés, les forums, les systèmes de vote, etc.
Sans plus tarder, jetons un coup d'œil aux quatre façons de mettre en œuvre le code de vérification en Java.
Méthode 1:
La première méthode a été la première chose à laquelle je pensais, et c'était la logique de mise en œuvre la plus simple, mais elle était extrêmement efficace et sûre.
L'opération spécifique est: 1. Utilisez Photoshop pour créer une image de code de vérification. L'image rectangulaire peut contenir des lettres, des chiffres ou chinois d'anglais nécessaires (comme ci-dessus)
2. Afficher l'image dans la page Swing Control ou JSP
3. Faites correspondre la chaîne de code de vérification correspondante pour chaque image dans le code
4. Lors de la soumission, obtenez la chaîne dans le composant ou la zone de texte et la chaîne de chaque image pour la comparer avec la méthode equals ().
L'inconvénient est que le processus de fabrication des images de code de vérification prend trop de temps et que la méthode d'implémentation est extrêmement faible. Il est fortement recommandé de l'implémenter de cette manière. La méthode suivante deviendra plus efficace, belle et relativement sûre.
Méthode 2:
Ici, nous parlons de Java Web et de l'implémentation du code de vérification sous servlet, et la logique est toujours très claire.
Pour éliminer le code d'implémentation plus simple, commençons par le code de clé frontal:
Lorsque nous cliquez sur "Impossible de voir clairement", l'image de code de vérification sera actualisée et une fonction JS sera appelée pour réinitialiser le chemin d'image pour remplacer l'image. Veuillez consulter le code ci-dessous. Dans le code, <% = request.getContextPath ()%> est de résoudre le problème des chemins relatifs et peut renvoyer le chemin racine du site. / Servlet / ImageServlet est un tout, pointant vers le servlet d'ImageServlet. Pourquoi avons-nous besoin d'ajouter un / servlet avant? Parce que nous avons fait du mappage de configuration dans web.xml, il peut être compris comme modifiant un nom plus long. Regardez ensuite la fonction JS suivante. Certaines personnes peuvent avoir des questions, pourquoi obtenir un temps actuel et l'ajouter à la fin du chemin? En fait, c'est pour résoudre le problème du cache du navigateur. C'est le problème que l'image de code de vérification a été modifiée après le déclenchement du service d'images, mais le cache n'a pas changé. À l'aide de différents moments à chaque instant, le cache du navigateur peut être invalidé.
<script type = "text / javascript"> function reloadcode () {var time = new Date (). getTime (); document.getElementById ("ImageCode"). Src = "<% = request.getContextPath ()%> / servlet / imagesvlet? d =" + time; } </ script>Voici les informations de configuration de clé dans web.xml:
<script type = "text / javascript"> function reloadcode () {var time = new Date (). getTime (); document.getElementById ("ImageCode"). Src = "<% = request.getContextPath ()%> / servlet / imagesvlet? d =" + time; } </ script>Voyons ensuite comment l'imagevlet clé génère des images:
<VerTlet> <Servlet-Name> ImagesVlet </ Servlet-Name> <Servlet-Class> com.muke.imageservlet </ servlet-class> </ servlet> <Serplet> <Servlet-Name> LoginServlet </Servlet-Class> </Servlet> com.muke.loginservlet </servlet-cllass> </vlass> com.muke.loginser <Servlet-Name> ImagesVlet </ Servlet-name> <Url-Pattern> / Servlet / ImagesVlet </ url-Pattern> </ Servlet-Mapping> <Servlet-Mapping> <Servlet-Name> LoginServlet </ Servlet-Name> </ Servlet-Pattern> / Servlet / LoginServlet </url-Pattern> </vrlett-mapping>
Si vous voulez décrire plus visiblement comment ce code de vérification est implémenté, alors un seul mot "dessiner" ressemble à la première méthode, et il est toujours relativement faible, mais l'efficacité de l'utilisation du code pour "dessiner" le code de vérification a certainement augmenté d'innombrables fois. Regardons le code ci-dessus. Tout d'abord, un objet BufferedImage BI est instancié. BI est utilisé pour dessiner l'image du code de vérification. Ensuite, en utilisant BI pour obtenir un pinceau G et utilisez G pour dessiner le fond rectangulaire de l'entité. Ensuite, en utilisant une logique simple pour appeler la méthode DrawString () couramment utilisée en Java pour dessiner les caractères de code de vérification sur le rectangle. Dans le même temps, la chaîne est ajoutée à l'objet de chaîne variable StringBuffer en séquence, et enfin stocké dans la session d'objet intégrée JSP pour la comparaison après avoir soumis le code de vérification. Afin d'afficher le code de vérification, nous devons également écrire l'image de code de vérification générée dans le flux ImageIo dans un certain format d'image.
Comme on peut le voir dans LoginServlet ci-dessous, vous pouvez comparer la chaîne dans la zone de soumission de code de vérification en obtenant la chaîne qui vient d'être stockée dans l'imagevlet. Vous pouvez changer les chaînes en minuscules ou en majuscules pour ignorer la majuscule.
La classe publique ImageServlet étend httpServlet {public void doGet (requette httpservletRequest, réponse httpservletResponse) lève ioException {bufferedImage bi = new BufferedImage (,, BufferedImage.Type_int_rgb); Graphiques g = bi.getGraphics (); Couleur c = nouvelle couleur (,,); g.setColor (c); G.Fillrect (,,); char [] ch = "abcdefghijklmnopqrstuvwxyz" .tocharArray (); Random r = new Random (); int len = ch.length, index; StringBuffer sb = new StringBuffer (); for (int i =; i <; i ++) {index = r.nextint (len); G.SetColor (New Color (R.Nextint (), R.Nextint (), R.Nextint (), R.Nextint ())); G.Drawstring (ch [index] + "", (i *) +,); sb.append (ch [index]); } request.getSession (). setAttribute ("piccode", sb.toString ()); Imageo.write (bi, "jpg", réponse.getOutputStream ()); }}Voici la légende de la mise en œuvre:
Ce qui précède est les connaissances pertinentes sur la production de code de vérification Java qui vous est présentée par l'éditeur. J'espère que cela vous sera utile! Je vous présenterai la production de code de vérification Java (partie 2). Amis intéressés, faites attention au site Web de Wulin.com!