您的位置:首页 > 编程语言 > Java开发

在Java web中创建简单的5位数字验证码

2012-12-20 11:02 211 查看
本验证码是使用JSP来实现,名称命名为:alidate.jsp

<%@ page language="java" contentType="image/jpeg; charset=UTF-8" pageEncoding="UTF-8"%>

<!--导入验证码所需要的包 -->

<%@page import="java.util.*" %>

<%@page import="java.awt.*" %>

<%@page import="java.io.*" %>

<%@page import="java.awt.image.*" %>

<%@page import="javax.imageio.*" %>

<%!

//获取给定范围的随机颜色

Color getRandomColor(int fc,int bc){

Random ran=new Random();

if(fc>255){fc=255;}

if(bc>255){bc=255;}

int r=fc+ran.nextInt(bc-fc);

int g=fc+ran.nextInt(bc-fc);

int b=fc+ran.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=85,height=20;

//在内存中创建图片

BufferedImage image=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);

//获取图形的上下文

Graphics g=image.getGraphics();

g.setColor(getRandomColor(200,250));

g.fillRect(0,0,width,height);

g.setFont(new Font("Times New Roman",Font.PLAIN,18));

g.setColor(new Color(200));

g.drawRect(1,1,width-1,height-1);

g.setColor(getRandomColor(160,200));

//生成一个随机类

Random random=new Random();

//随机产生155条干扰线

for(int i=0;i<155;i++){

int x=random.nextInt(width);

int y=random.nextInt(height);

int x1=random.nextInt(12);

int y1=random.nextInt(12);

g.drawLine(x,y,x+x1,y+y1);

}

//声明验证码字符串

String randomString="";

for(int i=0;i<5;i++){

String randomNumber=String.valueOf(random.nextInt(10));

randomString+=randomNumber;

g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));

g.drawString(randomNumber,13*i+6,16);

}

System.out.print("当前的验证码为:"+randomString);

session.setAttribute("randomString",randomString);

g.dispose();

OutputStream output=response.getOutputStream();

ImageIO.write(image,"JPEG",response.getOutputStream());

output.flush();

out.clear();

out=pageContext.pushBody();

%>

验证码文件创建好了以后,在其他的页面来对其进行引用

例如 :在index.jsp中引用,可在body标签中添加一个IMG标签 <img src="validata.jsp"/>即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: