jsp页面验证码源代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

jsp页面验证码源代码

在java后台中生成验证码的ImageIO传到前端页面显示,同时把验证码的v alue值传入session 中用于与用户输入的验证码进行匹配,在用户验证中使用ajax技术,在不刷新页面的同时进行验证码验证。

程序结构图:

VerifyCodeUtils程序主要内容为通过Java生成验证码的图片,以及验证码的value值,程序如下:

package utils;

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics2D;

import java.awt.image.BufferedImage;

import java.util.HashMap;

import java.util.Map;

import java.util.Random;

publicclass VerifyCodeUtils {

privatestatic BufferedImage image = null;

privatestatic Random random = new Random();

//在自己定义的一些数中,生成4位随机数

publicstatic String getVerifyCode() {

String str = "";

char[] code = newchar[]{'A','B','C','D','E','F','G','H','I ','J','K','L','M','N','P','Q','R','S','T','U',

'V','W','X','Y','Z','a','b','c','d','e','f','g','h','i',' j','k','m','n','p','q','r','s','t',

'u','v','w','x','y','z','2','3','4','5','6','7','8','9'};

Random random = new Random();

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

str += String.valueOf(code[random.nextInt(code.length)]);

}

return str;

}

//生成验证码图像

publicstatic Map getVerifyCode(int width, int heigth) {

VerifyCodeUtils.image = new BufferedImage(width, heigth, Bu fferedImage.TYPE_INT_RGB);

Graphics2D g = (Graphics2D) VerifyCodeUtils.image.g etGraphics();

String verifyCode = getVerifyCode();

Map map = new HashMap();

map.put("verifyCode", verifyCode);

//将图像填充为白色

g.setColor(Color.WHITE);

g.fillRect(0, 0, width, heigth);

//设置字体

g.setFont(new Font("宋体", Font.BOLD + Font.ITALIC, heigth-

10));

//画边框。

g.setColor(VerifyCodeUtils.getColor());

g.drawRect(0, 0, width, heigth);

//随机产生干扰线,使图象中的认证码不易被其它程序探测到

g.setColor(Color.BLACK);

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

int x = VerifyCodeUtils.random.nextInt(width);

int y = VerifyCodeUtils.random.nextInt(heigth);

int xl = VerifyCodeUtils.random.nextInt(5);

int yl = VerifyCodeUtils.random.nextInt(5);

g.setColor(getColor());

g.drawLine(x, y, x + xl, y + yl);

}

char c;

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

c = verifyCode.charAt(i);

g.drawString(c+"", i*20+40, heigth-10);

}

map.put("image", VerifyCodeUtils.image);

return map;

}

//随机化颜色

publicstatic Color getColor() {

int red = 0, green = 0, blue = 0;

// 产生随机的颜色分量来构造颜色值,这样输出的每位数字的颜色值都将不同。red = VerifyCodeUtils.random.nextInt(255);

green = VerifyCodeUtils.random.nextInt(255);

blue = VerifyCodeUtils.random.nextInt(255);

相关文档
最新文档