image.jsp
<%
@
page
language
=
"java"
import
=
"java.util.*"
pageEncoding
=
"gb2312"
%>
<%
@
page
contentType
=
"image/jpeg"
import
=
"java.awt.*,
java.awt.image.*,java.util.*,javax.imageio.*"
%>
<%
!
/
/
隨機(jī)顏色
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
(
)
;
/
/
設(shè)置頁(yè)面不緩存
response
.
setHeader
(
"Pragma"
,
"No-cache"
)
;
response
.
setHeader
(
"Cache-Control"
,
"no-cache"
)
;
response
.
setDateHeader
(
"Expires"
,
0
)
;
/
/
定義圖片的長(zhǎng)度和高度
int
width
=
60
,
height
=
20
;
/
/
在內(nèi)存中創(chuàng)建圖像
BufferedImage
image
=
new
BufferedImage
(
width
,
height
,
BufferedImage
.
TYPE_INT_RGB
)
;
Graphics
g
=
image
.
getGraphics
(
)
;
/
/
隨機(jī)類(lèi)
Random
random
=
new
Random
(
)
;
/
/
設(shè)置背景
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
)
)
;
/
/
用線條畫(huà)背景
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
)
;
}
/
/
生成驗(yàn)證碼隨機(jī)數(shù)
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
)
;
}
/
/
將認(rèn)證碼存入
SESSION
session
.
setAttribute
(
"code"
,
sRand
)
;
g
.
dispose
(
)
;
/
/
輸出圖像
ImageIO
.
write
(
image
,
"JPEG"
,
response
.
getOutputStream
(
)
)
;
%>
login.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<%
@
page
contentType
=
"text/html; charset=gb2312"
language
=
"java"
import
=
"java.sql.*"
errorPage
=
""
%>
<html>
<head>
<title>
登錄頁(yè)面
</title>
<script
language
=
"javascript"
>
function
loadimage
(
)
{
document
.
getElementById
(
"randImage"
)
.
src
=
"image.jsp?"
+
Math
.
random
(
)
;
}
</script>
</head>
<body>
<form
action
=
"check.jsp"
method
=
"post"
name
=
"loginForm"
>
<td
width
=
"118"
height
=
"22"
valign
=
"middle"
align
=
"center"
>
<input
type
=
"text"
name
=
"code"
size
=
"15"
>
</td>
<td
width
=
"138"
align
=
"center"
>
<a
href
=
"javascript:loadimage();"
>
<img
name
=
"randImage"
id
=
"randImage"
src
=
"image.jsp"
width
=
"60"
height
=
"20"
valign
=
"middle"
border
=
"1"
>
</a>
點(diǎn)擊圖片刷新
<input
type
=
"submit"
name
=
"login"
value
=
"提交"
>
</td>
</form>
</body>
</html>
check.jsp
|
<%
@
page
contentType
=
"text/html; charset=gb2312"
language
=
"java"
%>
<%
String
rand
=
(
String
)
session
.
getAttribute
(
"code"
)
;
String
input
=
request
.
getParameter
(
"code"
)
;
if
(
rand
.
equals
(
input
)
)
{
out
.
print
(
"<script>alert('驗(yàn)證成功');</script>"
)
;
}
else
{
out
.
print
(
"<script>alert('驗(yàn)證失敗');location.href='login.jsp';</script>"
)
;
}
%>
|
|
JSP生成驗(yàn)證碼