Heim  >  Artikel  >  Java  >  Codebeispiel für die Implementierung von Bildverifizierungscode in Java

Codebeispiel für die Implementierung von Bildverifizierungscode in Java

Y2J
Y2JOriginal
2017-04-26 13:35:561343Durchsuche

Java-Bildüberprüfungscode-Implementierungscode, Freunde in Not können darauf verweisen

Der Code lautet wie folgt:

makeCertPic.java
  package pic;
  import java.awt.Color;
  import java.awt.Font;
  import java.awt.Graphics;
  import java.awt.image.BufferedImage;
  import java.io.IOException;
  import java.io.OutputStream;
  import java.util.Random;
  import javax.imageio.ImageIO;
  /**
   * @author dzy
   * 生成验证码图片
   */
  public class makeCertPic {
    //验证码图片中可以出现的字符集,可根据需要修改
    private char mapTable[]={
       'a','b','c','d','e','f',
       'g','h','i','j','k','l',
       'm','n','o','p','q','r',
       's','t','u','v','w','x',
       'y','z','0','1','2','3',
       '4','5','6','7','8','9'};
    /**
    * 功能:生成彩色验证码图片
    * 参数width为生成图片的宽度,参数height为生成图片的高度,参数os为页面的输出流
    */
   public String getCertPic(int width, int height, OutputStream os) {
   if(width<=0)width=60;
   if(height<=0)height=20; 
   BufferedImage image = new BufferedImage(width, height, 
      BufferedImage.TYPE_INT_RGB); 
   // 获取图形上下文 
   Graphics g = image.getGraphics(); 
   // 设定背景色 
   g.setColor(new Color(0xDCDCDC)); 
   g.fillRect(0, 0, width, height); 
   //画边框 
   g.setColor(Color.black); 
   g.drawRect(0,0,width-1,height-1); 
   // 取随机产生的认证码
   String strEnsure = "";
   // 4代表4位验证码,如果要生成更多位的认证码,则加大数值
   for(int i=0; i<4; ++i) {
strEnsure+=mapTable[(int)(mapTable.length*Math.random())];
   }  
   //   将认证码显示到图像中,如果要生成更多位的认证码,增加drawString语句
   g.setColor(Color.black); 
   g.setFont(new Font("Atlantic Inline",Font.PLAIN,18)); 
   String str = strEnsure.substring(0,1); 
   g.drawString(str,8,17); 
   str = strEnsure.substring(1,2); 
   g.drawString(str,20,15); 
   str = strEnsure.substring(2,3); 
   g.drawString(str,35,18);   
   str = strEnsure.substring(3,4); 
   g.drawString(str,45,15); 
   // 随机产生10个干扰点
   Random rand = new Random();
   for (int i=0;i<10;i++) { 
    int x = rand.nextInt(width); 
    int y = rand.nextInt(height); 
    g.drawOval(x,y,1,1); 
   } 
   // 释放图形上下文
   g.dispose();   
   try {
    // 输出图像到页面 
    ImageIO.write(image, "JPEG", os);
   } catch (IOException e) {
    return "";
   }  
   return strEnsure;
   }
  }

In der getCertPic()-Methode eine Instanz des Speichers Das Bild wird zuerst erstellt Objekt, dann das Grafikkontextobjekt dieses Speicherbildes abrufen und dann dieses Kontextobjekt verwenden, um den Hintergrund und den Rand zu zeichnen. Als nächstes werden 4 Zeichen im Array „mapTable[] zufällig generiert, um eine Zeichenfolge als Überprüfungszeichenfolge zu bilden und im Speicher ausgegeben. Um eine bestimmte Menge an Interferenzen zu verursachen, werden 10 Interferenzpunkte nach dem Zufallsprinzip gezogen Interferenzeffekt, Sie können einige weitere Punkte zeichnen. Die Seite
makeCertPic.jsp wird verwendet, um das JavaBean aufzurufen, das das Bestätigungscodebild generiert und auf dem Client anzeigt. Der Quellcode lautet wie folgt:
MakeCertPic.jsp

Der Der Code lautet wie folgt:

<%@page contentType="image/jpeg" %>  <jsp:useBean id="image" scope="page" class="pic.makeCertPic" />  <%  String str=image.getCertPic(0,0,response.getOutputStream());     // 将认证码存入SESSION  session.setAttribute("certCode", str);
  out.clear();   out = pageContext.pushBody();  %>

Der generierte Bestätigungscode wird hier als Sitzungsvariable geschrieben, sodass auf der Datenseite, die Eingaben von der Anmeldeseite empfängt, der vom Benutzer eingegebene Bestätigungscode mit verglichen werden kann Diese Sitzungsvariable ist identisch.
LoginPic.jsp

Der Code lautet wie folgt:

 <%@ page contentType="text/html;charset=GB2312" %>
<script type="text/javascript">  function reloadcode(){                var verify=document.getElementById(&#39;code&#39;);                verify.setAttribute(&#39;src&#39;,&#39;makeCertPic.jsp?it=&#39;+Math.random());        }</script>  <html>   <head><title>登录页面</title></head>   <body>     <table align="center" border="0">   <tralign="center"><td><fontcolor="red"><html:errors/></font></td></tr>   <tr align="center"><td>系统登录</td></tr>   <form. action="loginCheck.jsp" method="post" focus="username">   <tr><td>用户名:<input type="text" name="username"/></td></tr>     <tr><td>密  码:<input type="password"name="password"/></td></tr>   <tr><td>验证码<img src="makeCertPic.jsp" id="code" onclick="reloadcode()" style="cursor: pointer;" alt="看不清楚,换一张"> </td></tr><tralign="left"><td>           <input type="submit" value="确定"/></td></tr>   </form>   </table>   </body>  </html>

Ob der Bestätigungscode korrekt eingegeben wurde, kann durch die folgende Anweisung überprüft werden:

Der Code lautet wie folgt:

 String certCode=request.getParameter("certCode");
  if(certCode.equals((String)session.getAttribute("certCode")))
   out.print("验证码输入正确");
  else
   out.print("验证码输入错误");

Das obige ist der detaillierte Inhalt vonCodebeispiel für die Implementierung von Bildverifizierungscode in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn