一个简单的网站随机验证码例子(JSP) zt

      发现 2005-1-10 17:7
一个简单的网站随机验证码例子(JSP) zt
在当前许多网站上为了防止恶意注册,大都使用了随机注册码来防止这样的事情发生。下面是我写的一个简单的随机码生成的例子,原理是使用Java 2D将在内存中生成的JPG图片输出到页面上。代码如下:
<%@ page autoFlush="false" import="java.awt.*,java.awt.image.*,com.sun.image.codec.jpeg.*,java.util.*"%>
<%@ page import="org.apache.commons.lang.RandomStringUtils"%>
<%
RandomStringUtils rs=new RandomStringUtils();
String random=rs.randomAlphanumeric(4);
session.setAttribute("random",random);
%>
<%

out.clear();
response.setContentType("image/jpeg");
response.addHeader("pragma","NO-cache");
response.addHeader("Cache-Control","no-cache");
response.addDateHeader("Expries",0);
int width=32, height=12;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
//以下填充背景颜色
g.setColor(Color.WHITE);
g.fillRect(0, 0, width, height);
//设置字体颜色
g.setColor(Color.RED);
g.drawString(random,3,10);
g.dispose();
ServletOutputStream outStream = response.getOutputStream();
JPEGImageEncoder encoder =JPEGCodec.createJPEGEncoder(outStream);
encoder.encode(image);
outStream.close();
%>
将上面的文件保存文random.jsp,随机产生的字符串被放在session中,在登陆或注册过程中将会被验证。
下面是如何调用这个JSP的例子(randomtest.jsp):
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body>
<img src="random.jsp">
</body>
</html>
把这两个文件部署到tomcat下,打开IE,输入http://localhost:8080/APPLICATION_PATH/romdontest.jsp。就可以看到生成的随机码了。
标签集:TAGS:
回复Comments() 点击Count()

回复Comments

{commentauthor}
{commentauthor}
{commenttime}
{commentnum}
{commentcontent}
作者:
{commentrecontent}