|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
对于一个大型项目,如果用java来作,可能需要9个月,并且可能需要翻阅10本以上的书,但如果用ruby来作,3个月,3本书就足够了,而.net也不过3,4本书足以,这就是区别。js|程序|考证码天生有4个随机数字和混乱背景的图片,数字和背景色彩会改动,服务器端革新(用history.go(-1)也会变)
发生考证码图片的文件image.jsp
<%@pagecontentType="image/jpeg"import="java.awt.*,
java.awt.image.*,java.util.*,javax.imageio.*"%>
<%!
ColorgetRandColor(intfc,intbc){//给定局限取得随机色彩
Randomrandom=newRandom();
if(fc>255)fc=255;
if(bc>255)bc=255;
intr=fc+random.nextInt(bc-fc);
intg=fc+random.nextInt(bc-fc);
intb=fc+random.nextInt(bc-fc);
returnnewColor(r,g,b);
}
%>
<%
//设置页面不缓存
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires",0);
//在内存中创立图像
intwidth=60,height=20;
BufferedImageimage=newBufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
//猎取图形高低文
Graphicsg=image.getGraphics();
//天生随机类
Randomrandom=newRandom();
//设定背景致
g.setColor(getRandColor(200,250));
g.fillRect(0,0,width,height);
//设定字体
g.setFont(newFont("TimesNewRoman",Font.PLAIN,18));
//画边框
//g.setColor(newColor());
//g.drawRect(0,0,width-1,height-1);
//随机发生155条搅扰线,使图像中的认证码不容易被别的程序探测到
g.setColor(getRandColor(160,200));
for(inti=0;i<155;i++)
{
intx=random.nextInt(width);
inty=random.nextInt(height);
intxl=random.nextInt(12);
intyl=random.nextInt(12);
g.drawLine(x,y,x+xl,y+yl);
}
//取随机发生的认证码(4位数字)
StringsRand="";
for(inti=0;i<4;i++){
Stringrand=String.valueOf(random.nextInt(10));
sRand+=rand;
//将认证码显现到图像中
g.setColor(newColor(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());
%>
利用考证码图片的文件a.jsp
<%@pagecontentType="text/html;charset=gb2312"%>
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
<html>
<head>
<title>认证码输出页面</title>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
<METAHTTP-EQUIV="Pragma"CONTENT="no-cache">
<METAHTTP-EQUIV="Cache-Control"CONTENT="no-cache">
<METAHTTP-EQUIV="Expires"CONTENT="0">
</head>
<body>
<formmethod=postaction="check.jsp">
<table>
<tr>
<tdalign=left>体系发生的认证码:</td>
<td></td>
</tr>
<tr>
<tdalign=left>输出下面的认证码:</td>
<td><inputtype=textname=randmaxlength=4value=""></td>
</tr>
<tr>
<tdcolspan=2align=center><inputtype=submitvalue="提交检测"></td>
</tr>
</form>
</body>
</html>
考证的页面check.jsp
<%@pagecontentType="text/html;charset=gb2312"language="java"import="java.sql.*"errorPage=""%>
<html>
<head>
<title>认证码考证页面</title>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
<METAHTTP-EQUIV="Pragma"CONTENT="no-cache">
<METAHTTP-EQUIV="Cache-Control"CONTENT="no-cache">
<METAHTTP-EQUIV="Expires"CONTENT="0">
</head>
<body>
<%
Stringrand=(String)session.getAttribute("rand");
Stringinput=request.getParameter("rand");
%>
体系发生的认证码为:<%=rand%><br>
您输出的认证码为:<%=input%><br>
<br>
<%
if(rand.equals(input)){
%>
<fontcolor=green>输出不异,认证乐成!</font>
<%
}else{
%>
<fontcolor=red>输出分歧,认证失利!</font>
<%
}
%>
</body>
</html>
而学习JAVA我觉得最应该避免的就是:只学习,不思考,只记忆,不实践! |
|