image.jsp
<%
@
page
language
=
"java"
import
=
"java.util.*"
pageEncoding
=
"gb2312"
%>
<%
@
page
contentType
=
"image/jpeg"
import
=
"java.awt.*,
java.awt.image.*,java.util.*,javax.imageio.*"
%>
<%
!
/
/
随机颜色
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
)
;
}
%>
<%
out
.
clear
(
)
;
/
/
设置页面不缓存
response
.
setHeader
(
"Pragma"
,
"No-cache"
)
;
response
.
setHeader
(
"Cache-Control"
,
"no-cache"
)
;
response
.
setDateHeader
(
"Expires"
,
0
)
;
/
/
定义图片的长度和高度
int
width
=
60
,
height
=
20
;
/
/
在内存中创建图像
BufferedImage
image
=
new
BufferedImage
(
width
,
height
,
BufferedImage
.
TYPE_INT_RGB
)
;
Graphics
g
=
image
.
getGraphics
(
)
;
/
/
随机类
Random
random
=
new
Random
(
)
;
/
/
设置背景
g
.
setColor
(
getRandColor
(
200
,
250
)
)
;
g
.
fillRect
(
0
,
0
,
width
,
height
)
;
/
/
字体定义
g
.
setFont
(
new
Font
(
"Times New Roman"
,
Font
.
PLAIN
,
18
)
)
;
g
.
setColor
(
getRandColor
(
160
,
200
)
)
;
/
/
用线条画背景
for
(
int
i
=
0
;
i
<
155
;
i
++
)
{
int
x
=
random
.
nextInt
(
width
)
;
int
y
=
random
.
nextInt
(
height
)
;
int
xl
=
random
.
nextInt
(
12
)
;
int
yl
=
random
.
nextInt
(
12
)
;
g
.
drawLine
(
x
,
y
,
x
+
xl
,
y
+
yl
)
;
}
/
/
生成验证码随机数
String
sRand
=
""
;
for
(
int
i
=
0
;
i
<
4
;
i
++
)
{
String
rand
=
String
.
valueOf
(
random
.
nextInt
(
10
)
)
;
sRand
+
=
rand
;
g
.
setColor
(
new
Color
(
20
+
random
.
nextInt
(
110
)
,
20
+
random
.
nextInt
(
110
)
,
20
+
random
.
nextInt
(
110
)
)
)
;
g
.
drawString
(
rand
,
13
*
i
+
6
,
16
)
;
}
/
/
将认证码存入
SESSION
session
.
setAttribute
(
"code"
,
sRand
)
;
g
.
dispose
(
)
;
/
/
输出图像
ImageIO
.
write
(
image
,
"JPEG"
,
response
.
getOutputStream
(
)
)
;
%>
login.jsp