JAVA网站制作之JSP天生黑色考证码程序
对于一个大型项目,如果用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我觉得最应该避免的就是:只学习,不思考,只记忆,不实践! 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从 不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。 还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。 如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。 Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台 Java 编程语言的风格十分接近C、C++语言。 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从 J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
页:
[1]