本人初学Java,有什么好的图形验证码推荐吗?Java是一种流行的编程语言,验证码是一种常用的网络安全技术 。目前 , 市面上有多种免费的PHP验证码可供选择,例如KgCaptcha等 。
怎样用java实现验证码 现在许多系统图片验证码java代码的注册 登录或者发布信息模块都添加图片验证码java代码的随机验证码功能 就是为了避免自动注册程序或者自动发布程序的使用
验证码实际上就是随机选择一些字符以图片的形式展现在页面上 如果进行提交操作的同时需要将图片上的字符同时提交 如果提交的字符与服务器session保存的不同 则认为提交信息无效 为了避免自动程序分析解析图片 通常会在图片上随机生成一些干扰线或者将字符进行扭曲 增加自动识别验证码的难度
在这里 图片验证码java代码我们使用java实现验证码
%@ page contentType= image/jpeg import= java awt * java awt image * java util * javax imageio * %
%!
Color getRandColor(int fc int bc){//给定范围获得随机颜色
Random random = new Random();
if(fc ) fc= ;
if(bc ) bc= ;
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 cache );
response setDateHeader( Expires );
// 在内存中创建图象
int width= height= ;
BufferedImage image = new BufferedImage(width height BufferedImage TYPE_INT_RGB);
// 获取图形上下文
Graphics g = image getGraphics();
//生成随机类
Random random = new Random();
// 设定背景色
g setColor(getRandColor( ));
g fillRect( width height);
//设定字体
g setFont(new Font( Times New Roman Font PLAIN ));
// 随机产生 条干扰线 使图象中的认证码不易被其它程序探测到
g setColor(getRandColor( ));
for (int i= ;i ;i++)
{
int x = random nextInt(width);
int y = random nextInt(height);
int xl = random nextInt( );
int yl = random nextInt( );
g drawLine(x y x+xl y+yl);
}
// 取随机产生的认证码( 位数字)
String codeList = ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ;
String sRand= ;
for (int i= ;i ;i++){
int a=random nextInt(codeList length() );
String rand=codeList substring(a a+ );
sRand+=rand;
// 将认证码显示到图象中
g setColor(new Color( +random nextInt( ) +random nextInt( ) +random nextInt( )));//调用函数出来的颜色相同 可能是因为种子太接近 所以只能直接生成
g drawString(rand *i+ );
}
// 将认证码存入SESSION
session setAttribute( rand sRand);
// 图象生效
g dispose();
// 输出图象到页面
ImageIO write(image JPEG response getOutputStream());
out clear();
out = pageContext pushBody();
lishixinzhi/Article/program/Java/hx/201311/25536
如何用Java代码段生成四位数字加字母的验证码?不知道你问图片验证码java代码的是不是生成这种图片验证码?如果只要一个随机四位数 那这行代码就够了(new Random().nextInt(9000) + 1000;),如果是生成页面图片验证码就是下面的了://设定 响应模式resp.setContentType("image/jpeg");// 生成令牌环数据;Integer token = new Random().nextInt(9000) + 1000;// 保存令牌环数据到session中req.getSession().setAttribute(IMAGE_TOKEN_NAME, token);// 生成令牌环图片ServletOutputStream out = resp.getOutputStream();BufferedImage img = new BufferedImage(60, 20,BufferedImage.TYPE_INT_RGB);Graphics g = img.getGraphics();g.setColor(Color.YELLOW);g.fillRect(0, 0, img.getWidth(), img.getHeight());g.setColor(Color.BLUE);g.setFont(new Font("", Font.BOLD, 18));g.drawString(String.valueOf(token), 10, 16);ImageIO.write(img, "jpg", out);out.close();
推荐阅读
- 安卓手机更换硬盘后刷机,安卓手机更换硬盘后刷机教程
- css3zoom属性,css zoom scale
- 单机恋爱游戏排行,单机恋爱游戏有哪些
- 衣服直播卖货冬款中年女人,直播卖衣服现场
- c语言函数调用拷贝过程 c++拷贝函数
- linuxii命令,linux命令
- gis数据服务接口,gis地图服务器
- 下载那些年,下载小说那些年
- java三角图代码 用java编写三角形图案