java.awt.image.*,java.util.*,javax.imageio.*" %>
<%
// 在内存中创建图象
width=60, height=20;
BufferedImage image = BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
// 获取图形上下文
Graphics g = image.getGraphics;
// 设定背景色
g.Color( Color(0xDCDCDC));
g.fillRect(0, 0, width, height);
//画边框
g.Color(Color.black);
g.drawRect(0,0,width-1,height-1);
// 取随机产生认证码(4位数字)
String rand = request.getParameter("rand");
rand = rand.sub(0,rand.indexOf("."));
switch(rand.length)
{
1: rand = "000"+rand; ;
2: rand = "00"+rand; ;
3: rand = "0"+rand; ;
default: rand = rand.sub(0,4); ;
}
// 将认证码存入SESSION
session.Attribute("rand",rand);
// 将认证码显示到图象中
g.Color(Color.black);
Integer tempNumber = Integer(rand);
String numberStr = tempNumber.toString;
g.Font( Font("Atlantic Inline",Font.PLAIN,18));
String Str = numberStr.sub(0,1);
g.drawString(Str,8,17);
Str = numberStr.sub(1,2);
g.drawString(Str,20,15);
Str = numberStr.sub(2,3);
g.drawString(Str,35,18);
Str = numberStr.sub(3,4);
g.drawString(Str,45,15);
// 随机产生88个干扰点使图象中认证码不易被其它探测到
Random random = Random;
for ( i=0;i<20;i)
{
x = random.nextInt(width);
y = random.nextInt(height);
g.drawOval(x,y,0,0);
}
// 图象生效
g.dispose;
// 输出图象到页面
ImageIO.write(image, "JPEG", response.getOutputStream);
%>
最新评论