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>?
"
?);
}
?
%>
?