login.jsp--------------------登录页面,在这里我是提供输入验证码然后提交进行验证
代码如下:
<%
@ page contentType
=
"
text/html; charset=gb2312
"
%>
<
html
>
<
head
>
<
meta http
-
equiv
=
"
Content-Type
"
content
=
"
text/html; charset=gb2312
"
>
<
title
>
用户登录
</
title
>
<
script language
=
"
javascript
"
>
function loadimage()
{
document.getElementById(
"
randImage
"
).src
=
"
image.jsp?
"
+
Math.random();
}
</
script
>
</
head
>
<
body
>
<
table width
=
"
256
"
border
=
"
0
"
cellpadding
=
"
0
"
cellspacing
=
"
0
"
>
<!--
DWLayoutTable
-->
<
form action
=
"
validate.jsp
"
method
=
"
post
"
name
=
"
loginForm
"
>
<
tr
>
<
td width
=
"
118
"
height
=
"
22
"
valign
=
"
middle
"
align
=
"
center
"
><
input type
=
"
text
"
name
=
"
rand
"
size
=
"
15
"
></
td
>
<
td width
=
"
138
"
valign
=
"
middle
"
align
=
"
center
"
><
img alt
=
"
code
"
name
=
"
randImage
"
id
=
"
randImage
"
src
=
"
image.jsp
"
width
=
"
60
"
height
=
"
20
"
border
=
"
1
"
align
=
"
absmiddle
"
></
td
>
</
tr
>
<
tr
>
<
td height
=
"
36
"
colspan
=
"
2
"
align
=
"
center
"
valign
=
"
middle
"
><
a href
=
"
javascript:loadimage();
"
><
font
class
=
pt95
>
刷新
</
font
></
a
></
td
>
</
tr
>
<
tr
>
<
td height
=
"
36
"
colspan
=
"
2
"
align
=
"
center
"
valign
=
"
middle
"
><
input type
=
"
submit
"
name
=
"
login
"
value
=
"
提交
"
></
td
>
</
tr
>
</
form
>
</
table
>
</
body
>
</
html
>
image.jsp-------------------生成随即验证码图片的jsp页面
代码如下:
<%
@ 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();
//
这句针对resin服务器,如果是tomacat可以不要这句
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(
"
rand
"
,sRand);
g.dispose();
ImageIO.write(image,
"
JPEG
"
, response.getOutputStream());
%>
validate.jsp-------------用来验证输入的验证码是否正确
代码如下:
<%
@ page contentType
=
"
text/html; charset=gb2312
"
%>
<%
String rand
=
( String )session.getAttribute(
"
rand
"
);
String input
=
request.getParameter(
"
rand
"
);
if
(rand.equals(input))
{
out.print(
"
<script>alert('验证通过!');</script>
"
);
}
else
{
out.print(
"
<script>alert('请输入正确的验证码!');location.href='login.jsp';</script>
"
);
}
%>