在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"/>即可。
<%@ 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"/>即可。
相关文章推荐
- php写简单的数字和汉字验证码
- 简单的四位数字验证码
- 一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之创建输出验证码图片的控制器
- [原创]java WEB学习笔记40:简单标签概述(背景,使用一个标签,标签库的API,SimpleTag接口,创建一个自定义的标签的步骤 和简单实践)
- C#创建简单的验证码
- 一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之创建输出验证码图片的控制器
- php创建最简单验证码
- C#简单数字验证码解析
- 一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之创建输出验证码图片的控制器
- 原生js实现数字字母混合验证码的简单实例
- 创建简单的验证码
- 在kaldi工具包使用小数字语料库创建一个简单的ASR系统(番外篇)
- 简单的数字验证码生成
- 自定义View实现简单的数字验证码(一)
- php简单数字验证码
- php一个简单的数字 字母验证码代码
- javascript实现数字验证码的简单实例
- php笔记之GD库图片创建/简单验证码
- java web 验证码-数字不变形
- 按键精灵+大漠插件简单数字验证码识别实践笔记