jsp

位置:IT落伍者 >> jsp >> 浏览文章

JSP设计彩色验证码实例


发布日期:2021年06月19日
 
JSP设计彩色验证码实例

生成有个随机数字和杂乱背景的图片数字和背景颜色会改变服务器端刷新(用historygo()也会变)
产生验证码图片的文件imagejsp
<%@pagecontentType="image/jpeg"import="javaawt*javaawtimage*javautil*javaximageio*"%>
<%!
ColorgetRandColor(intfcintbc){//给定范围获得随机颜色
Randomrandom=newRandom();
if(fc>)fc=;
if(bc>)bc=;
intr=fc+randomnextInt(bcfc);
intg=fc+randomnextInt(bcfc);
intb=fc+randomnextInt(bcfc);
returnnewColor(rgb);
}
%>
<%
//设置页面不缓存
responsesetHeader("PRagma""Nocache");
responsesetHeader("CacheControl""nocache");
responsesetDateHeader("Expires");

//在内存中创建图象
intwidth=height=;
BufferedImageimage=newBufferedImage(widthheightBufferedImageTYPE_INT_RGB);

//获取图形上下文
Graphicsg=imagegetGraphics();

//生成随机类
Randomrandom=newRandom();

//设定背景色
gsetColor(getRandColor());
gfillRect(widthheight);

//设定字体
gsetFont(newFont("TimesNewRoman"FontPLAIN));

//画边框
//gsetColor(newColor());
//gdrawRect(widthheight);


//随机产生条干扰线使图象中的认证码不易被其它程序探测到
gsetColor(getRandColor());
for(inti=;i<;i++)
{
intx=randomnextInt(width);
inty=randomnextInt(height);
intxl=randomnextInt();
intyl=randomnextInt();
gdrawLine(xyx+xly+yl);
}

//取随机产生的认证码(位数字)
StringsRand="";
for(inti=;i<;i++){
Stringrand=StringvalueOf(randomnextInt());
sRand+=rand;
//将认证码显示到图象中
gsetColor(newColor(+randomnextInt()+randomnextInt()+randomnextInt()));//调用函数出来的颜色相同可能是因为种子太接近所以只能直接生成
gdrawString(rand*i+);
}

//将认证码存入session
sessionsetAttribute("rand"sRand);

//图象生效
gdispose();

//输出图象到页面
ImageIOwrite(image"JPEG"responsegetOutputStream());

%>
使用验证码图片的文件ajsp
<%@pagecontentType="text/html;charset=gb"%>
<!DOCTYPEHTMLPUBLIC"//WC//DTDHTMLTransitional//EN">
<html>
<head>
<title>认证码输入页面</title>
<metahttpequiv="ContentType"content="text/html;charset=gb">
<METAHTTPEQUIV="Pragma"CONTENT="nocache">
<METAHTTPEQUIV="CacheControl"CONTENT="nocache">
<METAHTTPEQUIV="Expires"CONTENT="">
</head>
<body>
<formmethod=postaction="checkjsp">
<table>
<tr>
<tdalign=left>系统产生的认证码</td>
<td><imgborder=src="imagejsp"></td>
</tr>
<tr>
<tdalign=left>输入上面的认证码</td>
<td><inputtype=textname=randmaxlength=value=""></td>
</tr>
<tr>
<tdcolspan=align=center><inputtype=submitvalue="提交检测"></td>
</tr>
</form>
</body>
</html>
验证的页面checkjsp
<%@pagecontentType="text/html;charset=gb"language="java"import="javasql*"errorPage=""%>
<html>
<head>
<title>认证码验证页面</title>
<metahttpequiv="ContentType"content="text/html;charset=gb">
<METAHTTPEQUIV="Pragma"CONTENT="nocache">
<METAHTTPEQUIV="CacheControl"CONTENT="nocache">
<METAHTTPEQUIV="Expires"CONTENT="">
</head>
<body>
<%
Stringrand=(String)sessiongetAttribute("rand");
Stringinput=requestgetParameter("rand");
%>
系统产生的认证码为<%=rand%><br>
您输入的认证码为<%=input%><br>
<br>
<%
if(randequals(input)){
%>
<fontcolor=green>输入相同认证成功!</font>
<%
}else{
%>
<fontcolor=red>输入不同认证失败!</font>
<%
}
%>
</body>
</html>

上一篇:jsp运行环境入门设置

下一篇:jsp页面的多选框传递