jsp验证码,解决无法更新验证码问题

首先给你个验证码模板,文件名为Num.jsp

<%@ page pageEncoding = "gbk" contentType="image/jpeg" import = "javax.imageio.*,java.util.*,java.awt.image.*,java.awt.*" %>
window.self.location.reload(
true);

<%!

//在此处 获取并生成随机颜色

Color getRandColor(Random random,
int ff, int cc) {

if (ff > 255)

ff
= 255;

if (cc > 255)

cc
= 255;

int r = ff + random.nextInt(cc - ff);

int g = ff + random.nextInt(cc - ff);

int b = ff + random.nextInt(cc - ff);

return new Color(r, g, b);

}
%>



<%

response.setHeader(
"Pragma","No-cache");

response.setHeader(
"Cache-Control","no-cache");

response.setDateHeader(
"Expires", 0);



int width=60; //定义验证码图片的长度

int height=20; //定义验证码图片的宽度

BufferedImage image
= new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);



Graphics g
= image.getGraphics();



Random random
= new Random();



g.setColor(getRandColor(random,
200,250));

g.fillRect(
0, 0, width, height);



g.setFont(
new Font("Times New Roman",Font.PLAIN,18));


//定义字体形式


g.setColor(getRandColor(random,
160,200));

for (int i=0;i<155;i++)

{

int i_x = random.nextInt(width);

int i_y = random.nextInt(height);

int i_xl = random.nextInt(12);

int i_yl = random.nextInt(12);

g.drawLine(i_x,i_y,i_x
+i_xl,i_y+i_yl);

}


//用线条画背景


String s_Rand
="";

for (int i=0;i<4;i++)

{

String rand
=String.valueOf(random.nextInt(10));

s_Rand
+=rand;



g.setColor(
new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));

g.drawString(rand,
13*i+6,16);

}


//产生4位随机码


session.setAttribute(
"rand",s_Rand);


//将验证码存入Session中


g.dispose();



ImageIO.write(image,
"JPEG", response.getOutputStream());


//输出验证图片


out.clear();

out = pageContext.pushBody();



%>

重要的是如何调用这个验证码,而且单击验证码让它自动换一张,看下面代码,文件名为test.jsp

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%
String path
= request.getContextPath();
String basePath
= request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<script type="text/javascript">
function change()
{
var img
=document.getElementById("code");
img.src
="Num.jsp?date="+new Date();//此处很重要,不加后面的就不会变
}
</script>
</head>

<body>
<center>
<form id="dForm" method=post action="">
用户名:
<input name="username"><br>
&nbsp;码:<input type="password" name="password"><br>
校验码:
<input id="check" size="10">
<img id="code" border=0 src="Num.jsp" onclick="change()"/><br>
<input type="reset" value="重置">
<input type="submit" value="提交">

</form>
</center>
</body>
</html>
posted @ 2011-04-28 22:30  生如逆旅一苇以航  阅读(691)  评论(2编辑  收藏  举报