java验证码制作

来源:互联网 发布:淘宝阶层有什么用 编辑:程序博客网 时间:2024/06/04 19:30

//第一个类

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletResponse;

 

public class Validatenumber {   
 
 private static final String CODE_LIST = "1234567890";   
 private HttpServletResponse response = null;   
 private static final int HEIGHT = 20;   
 private static final int FONT_NUM = 4;   
 private int width = 0;   
 private int iNum = 0;   
 private String codeList = "";   
 private boolean drawBgFlag = false;      
 private int rBg = 0;   
 private int gBg = 0;   
 private int bBg = 0;   
 public Validatenumber(HttpServletResponse response)
 {       
  this.response = response;       
  this.width = 13 * FONT_NUM + 12;       
  this.iNum = FONT_NUM;       
  this.codeList = CODE_LIST;   
  }       
 public Validatenumber(HttpServletResponse response,int iNum,String codeList)
 {       
  this.response = response;       
 this.width = 13 * iNum + 12;       
 this.iNum = iNum;       
 this.codeList = codeList;           
 }       
 public String createRandImage()
 {       
  BufferedImage image = new BufferedImage(width, HEIGHT,BufferedImage.TYPE_INT_RGB);               
  Graphics g = image.getGraphics();               
  Random random = new Random();               
  if ( drawBgFlag )
  {           
   g.setColor(new Color(rBg,gBg,bBg));           
   g.fillRect(0, 0, width, HEIGHT);       
   }
  else
  {          
   g.setColor(getRandColor(200, 250));          
   g.fillRect(0, 0, width, HEIGHT);                      
   for (int i = 0; i < 155; i++)
   {              
    g.setColor(getRandColor(140, 200));             
    int x = random.nextInt(width);              
    int y = random.nextInt(HEIGHT);              
    int xl = random.nextInt(12);              
    int yl = random.nextInt(12);              
    g.drawLine(x, y, x + xl, y + yl);          
    }      
   }             
  g.setFont(new Font("Times New Roman", Font.PLAIN, 18));              
  String sRand="";      
  for (int i=0;i<iNum;i++)
  {           
   int rand=random.nextInt(codeList.length());          
   String strRand=codeList.substring(rand,rand+1);          
   sRand+=strRand;        
   g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));        
   g.drawString(strRand,13*i+6,16);      
   }      
  g.dispose();       
  try{         
   ImageIO.write(image, "JPEG", response.getOutputStream());       
   }
  catch(IOException e)
  {                  
   
  }               
  return sRand;  
  }      
 public void setBgColor(int r,int g,int b)
 {      
  drawBgFlag = true;       
  this.rBg = r;       
  this.gBg = g;       
  this.bBg = b;   
  }   
 private 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);   
 }
 //验证

}

 

 

//第二个类

import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
/*** @author SinNeR@blueidea.com * create a image*/


public class Validateimg
{    public static void main(String[] args)
  {      
   BufferedImage image = new BufferedImage(130, 40,BufferedImage.TYPE_INT_RGB);      
   Graphics g = image.getGraphics();   
   g.setColor(new Color(255,255,255));   
   g.fillRect(0, 0, 130, 40);    
   g.setColor(new Color(0,0,0));      
   g.drawString("HelloImage",6,16);    
   g.dispose();  
   try
   {          
    ImageIO.write(image, "jpeg", new File("C://helloImage.jpeg"));       
   }
   catch(IOException e)
   {          
    e.printStackTrace();      
 
   }   
 }
}

 

//jsp文件。获取图片
<%@ page contentType="image/jpeg" import="cn.forum.biz.*" %>
<%
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);
Validatenumber rc = new Validatenumber(response);
//RandImgCreater rc = new RandImgCreater(response,8,"abcdef");
//rc.setBgColor(100,100,100);
String rand = rc.createRandImage();
session.setAttribute("rand",rand);
out.clear();
out = pageContext.pushBody();
%>

 

//比较验证码输入正确或者不正确 JSP

Userlogininfo us=new Userlogininfo();
Validatelogin vali=new Validatelogin();
Userexecutelogin login=new Userexecutelogin();
request.setCharacterEncoding("GBK");
response.setCharacterEncoding("GBK");
String code = (String)session.getAttribute("rand");
String inputCode = request.getParameter("txtvalidate");

原创粉丝点击