p_w_picpath.jsp------------------------------生成随机验证码图片的Jsp页面

<%@pagecontentType="p_w_picpath/jpeg"import="java.awt.*,
java.awt.p_w_picpath.*,java.util.*,javax.p_w_picpathio.*"%>
<%!
ColorgetRandColor(intfc,intbc)
{
Randomrandom=newRandom();
if(fc>255)fc=255;
if(bc>255)bc=255;
intr=fc+random.nextInt(bc-fc);
intg=fc+random.nextInt(bc-fc);
intb=fc+random.nextInt(bc-fc);
returnnewColor(r,g,b);
}
%>
<%
out.clear();//这句针对resin服务器,如果是tomacat可以不要这句
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires",0);
intwidth=60,height=20;
BufferedImagep_w_picpath=newBufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
Graphicsg=p_w_picpath.getGraphics();
Randomrandom=newRandom();
g.setColor(getRandColor(200,250));
g.fillRect(0,0,width,height);
g.setFont(newFont("TimesNewRoman",Font.PLAIN,18));
g.setColor(getRandColor(160,200));
for(inti=0;i<155;i++)
{
intx=random.nextInt(width);
inty=random.nextInt(height);
intxl=random.nextInt(12);
intyl=random.nextInt(12);
g.drawLine(x,y,x+xl,y+yl);
}
StringsRand="";
for(inti=0;i<4;i++){
Stringrand=String.valueOf(random.nextInt(10));
sRand+=rand;
g.setColor(newColor(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(p_w_picpath,"JPEG",response.getOutputStream());
%>

logic.jsp--------------------------------登陆页面,在这里提供输入验证码然后提交并验证

<%@pagecontentType="text/html;charset=gbk"%>
<%@pagelanguage="java"import="java.sql.*"errorPage=""%>
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
<title>用户登录</title>
<scriptlanguage="javascript">
functionloadp_w_picpath(){
document.getElementById("randImage").src="p_w_picpath.jsp?"+Math.random();
}
</script>
</head>
<body>
<tablewidth="256"border="0"cellpadding="0"cellspacing="0">
<!--DWLayoutTable-->
<formaction="validate.jsp"method="post"name="loginForm">
<tr>
<tdwidth="118"height="22"valign="middle"align="center"><inputtype="text"name="rand"size="15"></td>
<tdwidth="138"valign="middle"align="center"><imgalt="code..."name="randImage"id="randImage"src="p_w_picpath.jsp"width="60"height="20"border="1"align="absmiddle"></td>
</tr>
<tr>
<tdheight="36"colspan="2"align="center"valign="middle"><ahref="loadp_w_picpath();"><fontclass=pt95>看不清点我< /font></a></td>
</tr>
<tr>
<tdheight="36"colspan="2"align="center"valign="middle"><inputtype="submit"name="login"value="提交"></td>
</tr>
</form>
</table>
</body>
</html>

validate.jsp--------------------------用来验证输入的验证码是否正确

<%@pagecontentType="text/html;charset=gb2312"language="java"import="java.sql.*"errorPage=""%>
<%
Stringrand=(String)session.getAttribute("rand");
Stringinput=request.getParameter("rand");
if(rand.equals(input)){
out.print("<script>alert('验证通过!');</script>");
}else{
out.print("<script>alert('请输入正确的验证码!');location.href='login.jsp';</script>");
}
%>

详细出处参考:http://www.jb51.net/article/16168.htm