Jsp验证码

用JSP做的一个简单的4位数字验证码。

其中在jsp中加入验证码的语句为:

<input name="authcode" type="text" size="14"> 
<img alt="验证码" src="number.jsp" align="absmiddle" title="看不清,换一张"  onclick="this.src='number.jsp?'+(new Date()).getTime();">

其中onclick点击事件后面的链接是生成验证码的jsp页面,单击图片可以刷新验证码。


<%@ page contentType="image/jpeg" language="java" 
	import="java.util.*,java.awt.*,java.awt.image.*,javax.imageio.*"
	 pageEncoding="utf-8"%>  
  
<%!  
	// 生成随机颜色
    Color 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);    
        return new Color(r,g,b);  
    }  
%>  
  
<%   
    //设置页面不缓存  
    response.setHeader("Pragma","no-cache");  
    response.setHeader("Cache-Control","no-catch");  
    response.setDateHeader("Expires",0);  
      
    //在内存中创建图象 ,指定图形验证码图片的大小
    int width = 60;  
    int height = 20;
    // 生成一张新图片    
    BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);  
      
    //创建图象  
    Graphics g = image.getGraphics();  
    //生成随机对象  
    Random random = new Random();  
    //设置背景色  
    g.setColor(getRandColor(200,250));  
    g.fillRect(0,0,width,height);  
    //设置字体  
    g.setFont(new Font("Tines Nev Roman",Font.PLAIN,20)); 
     
    //随机产生干扰线 ,让图片看起来更加杂乱
    g.setColor(getRandColor(160,200));  
    for(int i = 0; i < 255; i++){  
        int x = random.nextInt(width);  
        int y = random.nextInt(height);  
        int xl = random.nextInt(12);  
        int yl = random.nextInt(12);  
    }  
    //随机产生认证码,4位数字  
    String sRand = "";  
    for(int i = 0; i < 4; i++){  
        String rand = String.valueOf(random.nextInt(10));  
        sRand  += rand;  
        //将认证码显示到图象中  
        g.setColor(new Color(20 + random.nextInt(110),20 + random.nextInt(110),20 + random.nextInt(110)));  
        g.drawString(rand,13*i+6,16);  
    }  
    session.setAttribute("rCode",sRand);  
    //图像生效  
    g.dispose();  
    //输出图像到页面  
    ImageIO.write(image,"JPEG",response.getOutputStream());  
    out.clear();  
    out = pageContext.pushBody();  
%>  




猜你喜欢

转载自blog.csdn.net/u013941991/article/details/38901697
今日推荐