java随机生成动态验证码

 
为 了防止某些用户使用软件进行登录和发布信息,很多网站在用户登录或者发布信息时,都要求用户输入验证码。验证码通常是以一幅图片的形式显示的,用户按照图 片中显示的数字或者字母依次输入,服务端将对用户输入和验证码进行比较,以判断用户是否经过检验。由于验证码都是随机生成的,自动发布信息的软件无法知道 生成的验证码。

 

  1
《java随机生成动态验证码》
生成图片的程序:

  2
《java随机生成动态验证码》《java随机生成动态验证码》
/**/
/*
  3《java随机生成动态验证码》 * RandomCodeServlet.java
  4《java随机生成动态验证码》 *
  5《java随机生成动态验证码》 * Created on 2007-5-29, 0:51:02
  6《java随机生成动态验证码》 *
  7《java随机生成动态验证码》 * To change this template, choose Tools | Template Manager
  8《java随机生成动态验证码》 * and open the template in the editor.
  9《java随机生成动态验证码》 */



 10
《java随机生成动态验证码》

 11
《java随机生成动态验证码》
package
 com.javahe.image;

 12
《java随机生成动态验证码》

 13
《java随机生成动态验证码》《java随机生成动态验证码》
/** */
/**
 14《java随机生成动态验证码》 *
 15《java随机生成动态验证码》 * @author java-he
 16《java随机生成动态验证码》 */



 17
《java随机生成动态验证码》
import
 java.awt.Color;

 18
《java随机生成动态验证码》
import
 java.awt.Font;

 19
《java随机生成动态验证码》
import
 java.awt.Graphics2D;

 20
《java随机生成动态验证码》
import
 java.awt.image.BufferedImage;

 21
《java随机生成动态验证码》
import
 java.util.Random;

 22
《java随机生成动态验证码》
import
 javax.imageio.ImageIO;

 23
《java随机生成动态验证码》

 24
《java随机生成动态验证码》
import
 javax.servlet.
*
;

 25
《java随机生成动态验证码》
import
 java.io.
*
;

 26
《java随机生成动态验证码》
import
 javax.servlet.http.
*
;

 27
《java随机生成动态验证码》

 28
《java随机生成动态验证码》《java随机生成动态验证码》
public
 
class
 RandomCodeServlet 
extends
 HttpServlet 
《java随机生成动态验证码》
{
 29《java随机生成动态验证码》    //验证码图片的宽度。
 30《java随机生成动态验证码》    private int width=60;
 31《java随机生成动态验证码》    //验证码图片的高度。
 32《java随机生成动态验证码》    private int height=20;
 33《java随机生成动态验证码》    
 34《java随机生成动态验证码》    protected void service(HttpServletRequest req, HttpServletResponse resp)
 35《java随机生成动态验证码》《java随机生成动态验证码》            throws ServletException, java.io.IOException 《java随机生成动态验证码》{
 36《java随机生成动态验证码》        BufferedImage buffImg=new BufferedImage(width,height,
 37《java随机生成动态验证码》                BufferedImage.TYPE_INT_RGB);
 38《java随机生成动态验证码》        Graphics2D g=buffImg.createGraphics();
 39《java随机生成动态验证码》        
 40《java随机生成动态验证码》        //创建一个随机数生成器类。
 41《java随机生成动态验证码》        Random random=new Random();
 42《java随机生成动态验证码》        
 43《java随机生成动态验证码》        g.setColor(Color.WHITE);
 44《java随机生成动态验证码》        g.fillRect(0,0,width,height);
 45《java随机生成动态验证码》        
 46《java随机生成动态验证码》        //创建字体,字体的大小应该根据图片的高度来定。
 47《java随机生成动态验证码》        Font font=new Font(Times New Roman,Font.PLAIN,18);
 48《java随机生成动态验证码》        //设置字体。
 49《java随机生成动态验证码》        g.setFont(font);
 50《java随机生成动态验证码》        
 51《java随机生成动态验证码》        //画边框。
 52《java随机生成动态验证码》        g.setColor(Color.BLACK);
 53《java随机生成动态验证码》        g.drawRect(0,0,width1,height1);
 54《java随机生成动态验证码》        
 55《java随机生成动态验证码》        //随机产生160条干扰线,使图象中的认证码不易被其它程序探测到。
 56《java随机生成动态验证码》        g.setColor(Color.GRAY);
 57《java随机生成动态验证码》《java随机生成动态验证码》        for (int i=0;i<160;i++《java随机生成动态验证码》{
 58《java随机生成动态验证码》            int x = random.nextInt(width);
 59《java随机生成动态验证码》            int y = random.nextInt(height);
 60《java随机生成动态验证码》            int xl = random.nextInt(12);
 61《java随机生成动态验证码》            int yl = random.nextInt(12);
 62《java随机生成动态验证码》            g.drawLine(x,y,x+xl,y+yl);
 63《java随机生成动态验证码》        }

 64《java随机生成动态验证码》        
 65《java随机生成动态验证码》        
 66《java随机生成动态验证码》        //randomCode用于保存随机产生的验证码,以便用户登录后进行验证。
 67《java随机生成动态验证码》        StringBuffer randomCode=new StringBuffer();
 68《java随机生成动态验证码》        int red=0,green=0,blue=0;
 69《java随机生成动态验证码》        
 70《java随机生成动态验证码》        //随机产生4位数字的验证码。
 71《java随机生成动态验证码》《java随机生成动态验证码》        for (int i=0;i<4;i++《java随机生成动态验证码》{
 72《java随机生成动态验证码》            //得到随机产生的验证码数字。
 73《java随机生成动态验证码》            String strRand=String.valueOf(random.nextInt(10));
 74《java随机生成动态验证码》            
 75《java随机生成动态验证码》            //产生随机的颜色分量来构造颜色值,这样输出的每位数字的颜色值都将不同。
 76《java随机生成动态验证码》            red=random.nextInt(110);
 77《java随机生成动态验证码》            green=random.nextInt(50);
 78《java随机生成动态验证码》            blue=random.nextInt(50);
 79《java随机生成动态验证码》            
 80《java随机生成动态验证码》            //用随机产生的颜色将验证码绘制到图像中。
 81《java随机生成动态验证码》            g.setColor(new Color(red,green,blue));
 82《java随机生成动态验证码》            g.drawString(strRand,13*i+6,16);
 83《java随机生成动态验证码》            
 84《java随机生成动态验证码》            //将产生的四个随机数组合在一起。
 85《java随机生成动态验证码》            randomCode.append(strRand);
 86《java随机生成动态验证码》        }

 87《java随机生成动态验证码》        //将四位数字的验证码保存到Session中。
 88《java随机生成动态验证码》        HttpSession session=req.getSession();
 89《java随机生成动态验证码》        session.setAttribute(randomCode,randomCode.toString());
 90《java随机生成动态验证码》        
 91《java随机生成动态验证码》        //禁止图像缓存。
 92《java随机生成动态验证码》        resp.setHeader(Pragma,no-cache);
 93《java随机生成动态验证码》        resp.setHeader(Cache-Control,no-cache);
 94《java随机生成动态验证码》        resp.setDateHeader(Expires0);
 95《java随机生成动态验证码》        
 96《java随机生成动态验证码》        resp.setContentType(image/jpeg);
 97《java随机生成动态验证码》        
 98《java随机生成动态验证码》        //将图像输出到Servlet输出流中。
 99《java随机生成动态验证码》        ServletOutputStream sos=resp.getOutputStream();
100《java随机生成动态验证码》        ImageIO.write(buffImg, jpeg,sos);
101《java随机生成动态验证码》        sos.close();
102《java随机生成动态验证码》    }

103《java随机生成动态验证码》}



104
《java随机生成动态验证码》

105
《java随机生成动态验证码》

 1
《java随机生成动态验证码》
写好后在web.xml中添加对应的servlet。然后页面调用的时候用。

 2
《java随机生成动态验证码》《java随机生成动态验证码》
<%
《java随机生成动态验证码》
@page contentType=text/html
%>


 3
《java随机生成动态验证码》《java随机生成动态验证码》
<%
《java随机生成动态验证码》
@page pageEncoding=UTF-8
%>


 4
《java随机生成动态验证码》《java随机生成动态验证码》
<%
《java随机生成动态验证码》

 5《java随机生成动态验证码》The taglib directive below imports the JSTL library. If you uncomment it,
 6《java随机生成动态验证码》you must also add the JSTL library to the project. The Add Library《java随机生成动态验证码》 action
 7《java随机生成动态验证码》on Libraries node in Projects view can be used to add the JSTL 1.1 library.
 8《java随机生成动态验证码》

%>


 9
《java随机生成动态验证码》《java随机生成动态验证码》
<%
《java随机生成动态验证码》

10《java随机生成动态验证码》<%@taglib uri=http://java.sun.com/jsp/jstl/core prefix=c

%>
 

11
《java随机生成动态验证码》–%>

12
《java随机生成动态验证码》《java随机生成动态验证码》
<%
《java随机生成动态验证码》

13《java随机生成动态验证码》if(request.getParameter(random)!=null)
14《java随机生成动态验证码》{
15《java随机生成动态验证码》    if(request.getParameter(random).equals(session.getAttribute(randomCode)))
16《java随机生成动态验证码》    {
17《java随机生成动态验证码》        out.println(ok!);
18《java随机生成动态验证码》    }
19《java随机生成动态验证码》}
20《java随机生成动态验证码》

%>


21
《java随机生成动态验证码》
<!
DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”

22
《java随机生成动态验证码》“http://www.w3.org/TR/html4/loose.dtd”
>


23
《java随机生成动态验证码》

24
《java随机生成动态验证码》
<
html
>


25
《java随机生成动态验证码》    
<
head
><
title
>
登录页面
</
title
>


26
《java随机生成动态验证码》    
<
body
>


27
《java随机生成动态验证码》        
<
form 
method
=”POST”
 action
=”index.jsp”
>


28
《java随机生成动态验证码》            
<
table
>


29
《java随机生成动态验证码》                
<
tr
>


30
《java随机生成动态验证码》                    
<
td
>
用户名:
</
td
>


31
《java随机生成动态验证码》                    
<
td
><
input 
type
=”text”
 name
=”username”
></
td
>


32
《java随机生成动态验证码》                
</
tr
>


33
《java随机生成动态验证码》                
<
tr
>


34
《java随机生成动态验证码》                    
<
td
>
密码:
</
td
>


35
《java随机生成动态验证码》                    
<
td
><
input 
type
=”password”
 name
=”password”
></
td
>


36
《java随机生成动态验证码》                
</
tr
>


37
《java随机生成动态验证码》                
<
tr
>


38
《java随机生成动态验证码》                    
<
td
>
验证码:
</
td
>


39
《java随机生成动态验证码》                    
<
td
>


40
《java随机生成动态验证码》                        
<
input 
type
=”text”
 name
=”random”
 maxlength
=”4″
>


41
《java随机生成动态验证码》                    
<
img 
src
=”imgcode”
>


42
《java随机生成动态验证码》                    
</
td
>


43
《java随机生成动态验证码》                
</
tr
>


44
《java随机生成动态验证码》                
<
tr
>


45
《java随机生成动态验证码》                    
<
td
><
input 
type
=”reset”
 value
=”重填”
></
td
>


46
《java随机生成动态验证码》                    
<
td
><
input 
type
=”submit”
 value
=”提交”
></
td
>


47
《java随机生成动态验证码》                
</
tr
>


48
《java随机生成动态验证码》            
</
table
>


49
《java随机生成动态验证码》        
</
form
>


50
《java随机生成动态验证码》    
</
body
>


51
《java随机生成动态验证码》
</
html
>


52
《java随机生成动态验证码》  

    原文作者:applepop
    原文地址: https://blog.csdn.net/applepop/article/details/1899425
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞