惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Hugging Face - Blog
Hugging Face - Blog
云风的 BLOG
云风的 BLOG
大猫的无限游戏
大猫的无限游戏
M
MIT News - Artificial intelligence
L
LangChain Blog
阮一峰的网络日志
阮一峰的网络日志
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Recent Announcements
Recent Announcements
IT之家
IT之家
Google DeepMind News
Google DeepMind News
罗磊的独立博客
爱范儿
爱范儿
Last Week in AI
Last Week in AI
人人都是产品经理
人人都是产品经理
U
Unit 42
MongoDB | Blog
MongoDB | Blog
S
SegmentFault 最新的问题
B
Blog
博客园 - 叶小钗
月光博客
月光博客
Stack Overflow Blog
Stack Overflow Blog
V
Visual Studio Blog
C
Check Point Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知

博客园 - 李韦利

解读C#中的规则表达式 Oracle函数大全 作一个真正合格程序员的七种素质 面试官最爱提的问题TOP10 一名董事长给大学生的18条忠告 程序人生:做技术,切不可沉湎于技术 开始上班了 连接MySQl的JavaBean - 李韦利 - 博客园 Jakarta-Tomcat简明中文版用户指南 SQL 语法参考 Mysql与JSP网页中文乱码问题的解决方案 MD5加密算法简介 jsp实现cookie的使用 Java语言入门级的十二大特色详细介绍 JAVABEAN实现多文件上传的两种方法 J2EE架构学习者的6个最佳实践 html与jsp开发分离技术 安装程序制作简明教程 Unix/Linux命令详解
JSP生成验证码源程序
李韦利 · 2006-03-07 · via 博客园 - 李韦利

<%@ page contentType="image/jpeg" import="java.awt.*,
java.awt.image.*,java.util.*,javax.imageio.*" %>
<%
//
在内存中创建图象
int width=60, height=20;
BufferedImage image = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);

//

获取图形上下文
Graphics g = image.getGraphics();

//

设定背景色
g.setColor(new Color(0xDCDCDC));
g.fillRect(0, 0, width, height);

//

画边框
g.setColor(Color.black);
g.drawRect(0,0,width-1,height-1);

//

取随机产生的认证码(4位数字)
String rand = request.getParameter("rand");
rand = rand.substring(0,rand.indexOf("."));
switch(rand.length())
{
case 1: rand = "000"+rand; break;
case 2: rand = "00"+rand; break;
case 3: rand = "0"+rand; break;
default: rand = rand.substring(0,4); break;
}

//

将认证码存入SESSION
session.setAttribute("rand",rand);

//

将认证码显示到图象中
g.setColor(Color.black);
Integer tempNumber = new Integer(rand);
String numberStr = tempNumber.toString();

g.setFont(new Font("Atlantic Inline",Font.PLAIN,18));
String Str = numberStr.substring(0,1);
g.drawString(Str,8,17);

Str = numberStr.substring(1,2);
g.drawString(Str,20,15);
Str = numberStr.substring(2,3);
g.drawString(Str,35,18);

Str = numberStr.substring(3,4);
g.drawString(Str,45,15);

//

随机产生88个干扰点,使图象中的认证码不易被其它程序探测到
Random random = new Random();
for (int i=0;i<20;i++)
{
int x = random.nextInt(width);
int y = random.nextInt(height);
g.drawOval(x,y,0,0);
}

//

图象生效
g.dispose();

//

输出图象到页面
ImageIO.write(image, "JPEG", response.getOutputStream());
%>