您的位置:首页 > 其它

生成数字和字母组合的验证码

2014-03-24 13:22 387 查看
//生成数字和字母组合的验证码

public class ResponseDemo3 extends HttpServlet {

private static final long serialVersionUID =
1L;

private int WIDTH=140;

private int HEIGHT=35;

public void doGet(HttpServletRequest request,
HttpServletResponse response)

throws
ServletException, IOException {

BufferedImage image=new
BufferedImage(WIDTH,HEIGHT,BufferedImage.TYPE_INT_RGB);

Graphics
g=image.getGraphics();

//1、设置背景色

setBackGround(g);

//2、设置边框

serBorder(g);

//3、画干扰线

drawRandomLine(g);

//4、写随机数

drawRandomNum((Graphics2D)g);

//禁止图像缓存。

response.setHeader("Pragma", "no-cache");

response.setHeader("Cache-Control",
"no-cache");

response.setDateHeader("Expires", 0);

//5、图形写给浏览器

response.setContentType("text/jpeg");

ImageIO.write(image, "jpg",
response.getOutputStream());

}

private void setBackGround(Graphics g) {

g.setColor(getRandColor(190,230));

g.fillRect(0, 0, WIDTH,
HEIGHT);

}

private void serBorder(Graphics g) {

g.setColor(Color.BLACK);

g.drawRect(1, 1, WIDTH-2,
HEIGHT-2);

}

private void drawRandomLine(Graphics g) {

g.setColor(Color.GRAY);

for(int
i=0;i<4;i++){

int x1=new
Random().nextInt(WIDTH);

int y1=new
Random().nextInt(HEIGHT);

int x2=new
Random().nextInt(WIDTH);

int y2=new
Random().nextInt(HEIGHT);

g.drawLine(x1,
y1, x2, y2);

}

}

private void drawRandomNum(Graphics2D g)
{

g.setColor(getRandColor(20,80));

//设置字体的大小

g.setFont(new
Font("宋体",Font.BOLD,30));

String
base="abcdefghijklmnopqrstuvwxyz0123456789";

int x=10;

for(int
i=0;i<6;i++){

int
degree=new Random().nextInt()0;//角度范围在-30-30

String
ch=base.charAt(new Random().nextInt(base.length()))+"";

//设置旋转角度

g.rotate(degree*Math.PI/180,x,20);

g.drawString(ch,
x, 25);

//每次旋转完后再把角度设置成原来的

g.rotate(-degree*Math.PI/180,x,20);

x+=20;

}

}

//给定范围获得随机颜色

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);

}

public void doPost(HttpServletRequest request,
HttpServletResponse response)

throws
ServletException, IOException {

doGet(request,
response);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: