选择显示字体大小

jsp彩色验证码

    生成有4个随机数字和杂乱背景的图片,数字和背景颜色会改变,服务器端刷新(用history.go(-1)也会变)
原型参考alibaba  http://china.alibaba.com/member/showimage

产生验证码图片的文件-----image.jsp

<%@ page contenttype="image/jpeg" 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());


%>

---------------使用验证码图片的文件---------a.jsp------------------------------------

<%@ page contenttype="text/html;charset=gb2312" %>
<!doctype html public "-//w3c//dtd html 4.01 transitional//en">
<html>
<head>
<title>认证码输入页面</title>
<meta http-equiv="content-type" content="text/html; charset=gb2312">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
</head>
<body>
<form method=post action="check.jsp">
<table>
<tr>
<td align=left>系统产生的认证码:</td>
<td><img border=0 src="image.jsp"></td>
</tr>
<tr>
<td align=left>输入上面的认证码:</td>
<td><input type=text name=rand maxlength=4 value=""></td>
</tr>
<tr>
<td colspan=2 align=center><input type=submit value="提交检测"></td>
</tr>
</form>
</body>
</html>

-----------------验证的页面----------check.jsp

<%@ page contenttype="text/html; charset=gb2312" language="java" import="java.sql.*" errorpage="" %>
<html>
<head>
<title>认证码验证页面</title>
<meta http-equiv="content-type" content="text/html; charset=gb2312">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
</head>

<body>
<%
 string rand = (string)session.getattribute("rand");
 string input = request.getparameter("rand");
%>
系统产生的认证码为: <%= rand %><br>
您输入的认证码为: <%= input %><br>
<br>
<%
  if (rand.equals(input)) {
%>
<font color=green>输入相同,认证成功!</font>
<%
  } else {
%>
<font color=red>输入不同,认证失败!</font>
<%
  }
%>
</body>
</html>


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons