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
|
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>登录页面</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>点击图片刷新
<input
type="submit"
name="login"
value="提交"></td>
</form>
</body>
</html>
check.jsp
|