jsp 生成验证码代码

 更新时间:2009年06月04日 02:26:44   作者:  
本页面 image.jsp 功能:实现自动生成4位的验证码(有数字和字母构成
调用方法:在jsp页面用图像标签便可以直接调用如下是标签代码
<img border=0 src="image.jsp">,只需要把该代码发在验证码要显示的区域就可以了)
<%@ page contentType="image/jpeg" import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*" %>
<%!
public static String code="abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
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);
}
// 取随机产生的认证码(由数字和字母组长的)
String sRand="";
for (int i=0;i<4;i++){
int rand=random.nextInt(62);
sRand+=String.valueOf(code.charAt(rand));
// 将认证码显示到图象中
g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));// 调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
g.drawString(String.valueOf(code.charAt(rand)),13*i+6,16);
}
// 将认证码存入SESSION
session.setAttribute("rand",sRand);
// 图象生效
g.dispose();
// 输出图象到页面
ImageIO.write(image, "JPEG", response.getOutputStream());
%>
.下面是一个test.jsp,来进行验证码生成的测试,然后交给check.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>

相关文章

  • JRun3.0配合IIS的安装全过程

    JRun3.0配合IIS的安装全过程

    JRun3.0配合IIS的安装全过程...
    2006-10-10
  • 使用MongoDB和JSP实现一个简单的购物车系统实例

    使用MongoDB和JSP实现一个简单的购物车系统实例

    本篇文章主要介绍了使用MongoDB和JSP实现一个简单的购物车系统实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2016-11-11
  • jsp实现简单用户7天内免登录

    jsp实现简单用户7天内免登录

    这篇文章主要为大家详细介绍了jsp实现简单用户7天内免登录,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • 读取数据库的数据并整合成3D饼图在jsp中显示详解

    读取数据库的数据并整合成3D饼图在jsp中显示详解

    这篇文章主要给大家介绍了关于读取数据库的数据并整合成3D饼图在jsp中显示的相关资料,文中通过示例代码给大家介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。
    2017-07-07
  • 一个开发人员眼中的JSP技术(上)

    一个开发人员眼中的JSP技术(上)

    一个开发人员眼中的JSP技术(上)...
    2006-10-10
  • JSP实现计算器功能(网页版)

    JSP实现计算器功能(网页版)

    这篇文章讲述了JSP实现计算器功能的详细代码,网页版的计算器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2015-12-12
  • Spring注入Date类型的三种方法总结

    Spring注入Date类型的三种方法总结

    这篇文章主要介绍了Spring注入Date类型的三种方法总结的相关资料,希望通过本文能帮助到大家,让大家掌握这几种方法,需要的朋友可以参考下
    2017-10-10
  • jsp实现登录界面

    jsp实现登录界面

    这篇文章主要为大家详细介绍了jsp实现登录界面,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • jsp网站永久换域名的处理过程

    jsp网站永久换域名的处理过程

    最近公司网站要求换域名,原来的域名彻底不用了,考虑以前旧域名还有很多外链,用户可能会使用旧域名等问题,需要把原来域名的链接都转到新域名下,具体页面最后也转到了新的页面
    2008-10-10
  • jsp中获取当前目录的方法

    jsp中获取当前目录的方法

    这篇文章主要介绍了jsp中获取当前目录的方法,实例分析了JSP获取当前路径的方法,并对相关目录操作函数进行了总结归纳,是非常实用的技巧,需要的朋友可以参考下
    2014-11-11

最新评论