花看半开,酒饮微醉
随机验证码
随机验证码程序
import
java.awt.Color;
import
java.awt.Font;
import
java.awt.Graphics;
import
java.awt.image.BufferedImage;
import
java.io.IOException;
import
java.util.Random;
import
javax.servlet.Servlet;
import
javax.servlet.ServletException;
import
javax.servlet.http.HttpServlet;
import
javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse;
/** */
/**
*
@version
1.0
*
@author
baiyf
*/
public
class
ValidateImg
extends
HttpServlet
implements
Servlet
{
public
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);
}
/** */
/**
*
@see
javax.servlet.http.HttpServlet#void (javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
public
void
doGet(HttpServletRequest req, HttpServletResponse resp)
throws
ServletException, IOException
{
doPost(req, resp);
}
/** */
/**
*
@see
javax.servlet.http.HttpServlet#void (javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
public
void
doPost(HttpServletRequest req, HttpServletResponse resp)
throws
ServletException, IOException
{
resp.setHeader(
"
Pragma
"
,
"
No-cache
"
);
resp.setHeader(
"
Cache-Control
"
,
"
no-cache
"
);
resp.setDateHeader(
"
Expires
"
,
0
);
//
在内存中创建图象
int
width
=
90
, height
=
40
;
BufferedImage image
=
new
BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
//
获取图形上下文
Graphics g
=
image.createGraphics();
//
设定背景色
g.setColor(getRandColor(
180
,
250
));
g.fillRect(
0
,
0
, width, height);
Random random
=
new
Random();
//
生成干扰椭圆
for
(
int
i
=
0
; i
<
5
; i
++
)
{
g.setColor(getRandColor(
50
,
100
));
int
x
=
random.nextInt(width);
int
y
=
random.nextInt(height);
g.drawOval(x, y,
4
,
4
);
}
g.setFont(
new
Font(
""
, Font.PLAIN,
40
));
String sRand
=
""
;
for
(
int
i
=
0
; i
<
4
; i
++
)
{
//
取随机产生的认证码(4位数字)
String rand
=
String.valueOf(random.nextInt(
10
));
sRand
+=
rand;
//
随机产生颜色
g.setColor(
new
Color(
20
+
random.nextInt(
80
),
20
+
random.nextInt(
100
),
20
+
random.nextInt(
90
)));
//
画数字
g.drawString(rand, (
17
+
random.nextInt(
3
))
*
i
+
8
,
34
);
//
生成干扰线
for
(
int
k
=
0
; k
<
12
; k
++
)
{
int
x
=
random.nextInt(width);
int
y
=
random.nextInt(height);
int
xl
=
random.nextInt(
9
);
int
yl
=
random.nextInt(
9
);
g.drawLine(x, y, x
+
xl, y
+
yl);
}
}
req.getSession().setAttribute(
"
rand
"
,sRand);
g.dispose();
javax.imageio.ImageIO.write(image,
"
JPEG
"
, resp.getOutputStream());
}
}
posted on 2006-06-26 22:02
baim
阅读(207)
评论(0)
编辑
收藏
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
Powered by:
BlogJava
Copyright © baim
<
2006年6月
>
日
一
二
三
四
五
六
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
导航
首页
新随笔
联系
聚合
管理
常用链接
我的随笔
我的评论
我的参与
最新评论
随笔分类
(27)
ent(1)
(rss)
Java(3)
(rss)
开源软件框架(14)
(rss)
数据库(5)
(rss)
软件配置使用(4)
(rss)
随笔档案
(28)
2007年10月 (2)
2006年7月 (6)
2006年6月 (20)
搜索
最新评论
1. re: Hibernate一对多数据关联
很屁精
--很高