验证码文件image.jsp
<%@ page contentType="image/jpeg; charset=utf-8" import="java.awt.*,
java.awt.image.*,java.util.*,javax.imageio.*" %>
<%!
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-cache");
response.setDateHeader("Expires", 0);
// 在内存中创建图象
int width=60, 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("Times New Roman",Font.PLAIN,18));
//画边框
//g.setColor(new Color());
//g.drawRect(0,0,width-1,height-1);
// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
g.setColor(getRandColor(160,200));
for (int i=0;i<155;i++)
{
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);
}
// 取随机产生的认证码(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
session.setAttribute("rand",sRand);
// 图象生效
g.dispose();
// 输出图象到页面
ImageIO.write(image, "JPEG", response.getOutputStream());
out.clear();
out = pageContext.pushBody();
%>
点击刷新验证码
<img id="Image1" src="image.jsp" style="cursor:pointer" onmouseup="RefreshImage()" alt="点击重刷新"/>
<script language ="javascript" type="text/javascript" >
function RefreshImage()
{
var el =document.getElementById("Image1");
el.src=el.src+'?';//这个特别重要
}
</script>
分享到:
相关推荐
验证码使用jcaptcha,发送邮件使用JEmail 基于SSM实现的注册登录系统。验证码使用jcaptcha,发送邮件使用JEmail 基于SSM实现的注册登录系统。验证码使用jcaptcha,发送邮件使用JEmail 基于SSM实现的注册登录系统。...
验证码使用的demo,可以作为项目使用,供参考
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计...基于SSM实现的注册登录系统源码+项目说明(验证码使用jcaptcha,发送邮件使用JEmail).zip
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计...基于SSM创建的注册登录系统源码+项目说明(验证码使用jcaptcha,发送邮件使用JEmail).zip
谷歌验证码使用工具——kaptcha-2.3.2的使用非常简单;
12306验证码怎么用?12306火车票订票网站图片验证码使用教程.docx
基于SSM实现的注册登录系统。验证码使用jcaptcha,发送邮件使用JEmail.zip
12306火车票订票网站图片验证码使用教程.docx
自制ASP.NET C#中文验证码 使用DLL和纯代码二种对比 DLL使用WEBXML提供的产生随机中文字符
kaptcha验证码使用
项目封装了比较通用的校验、训练、验证、识别、API模块,极大的减少了识别字符型验证码花费的时间和精力。
防止机器录入,频繁调用出现故障的使用方式,登陆页面必备神器,登陆验证的绝佳选择,做等你来拿!
3、把自己的互亿无线账号(APIID)和密码(APIKEY),填写在织梦后台-系统-系统设置-系统基本参数-站点设置下,即可正常使用。互亿无线平台的短信验证码费
易语言闭关验证码1.00源码,闭关验证码1.00,创建位图,取画布句柄,取位图句柄,取宽度,取高度,置画笔属性,置实色画刷,置交叉线画刷,移动到,画直线到,画多义线点数组,画多义线横纵数组,画多边形点数组,画多边形横纵数组,...
tessnet2_32及语言包 及去除验证码的方法 可以识别简单的带噪点的验证码 加减法 完全可用 已经运行成功 比较复杂的验证码识别率不高. 单数据的识别率90%
验证码的使用
Android下使用Canvas生成验证码Bitmap
使用方法 c = Request.form("c") '如果可以输入小写的数字,请把下面三行注释掉 for ii = 0 to 9 c = Replace(c,Cstr(ii),"") next c = Replace(c,"零","0") c = Replace(c,"一","1") c = Replace(c,"二",...
1、该资源内项目代码都是经过测试运行成功,功能正常的情况下才上传的,请放心下载使用。 2、适用人群:主要针对计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、数学、电子信息等...