JSP生成验证码

来源:互联网 发布:163网络硬盘 编辑:程序博客网 时间:2024/04/30 20:30

image.jsp

<%@pagelanguage="java"import="java.util.*"pageEncoding="gb2312"%>
<%@pagecontentType="image/jpeg"import="java.awt.*,
java.awt.image.*,java.util.*,javax.imageio.*"%>
<%!
    //随机颜色
    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();
    //设置页面不缓存
    response.setHeader("Pragma","No-cache");
    response.setHeader("Cache-Control","no-cache");
    response.setDateHeader("Expires",0);
    
    //定义图片的长度和高度
    intwidth=60,height=20;
    
    //在内存中创建图像
    BufferedImageimage=newBufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
    Graphicsg=image.getGraphics();
    //随机类
    Randomrandom=newRandom();
    //设置背景
    g.setColor(getRandColor(200,250));
    g.fillRect(0,0,width,height);
    
    //字体定义
    g.setFont(newFont("Times New Roman",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("code",sRand);
    
    g.dispose();
    
    //输出图像
    ImageIO.write(image,"JPEG",response.getOutputStream());
%>
login.jsp

XHTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<%@pagecontentType="text/html; charset=gb2312"language="java"import="java.sql.*"errorPage=""%>
<html>
<head>
<title>登录页面</title>
<scriptlanguage="javascript">
functionloadimage(){
document.getElementById("randImage").src="image.jsp?"+Math.random();
}
</script>
</head>
 
<body>
<formaction="check.jsp"method="post"name="loginForm">
<tdwidth="118"height="22"  valign="middle"align="center"><inputtype="text"name="code"size="15"></td>
<tdwidth="138"align="center"><ahref="javascript:loadimage();"><imgname="randImage"id="randImage"src="image.jsp"width="60"height="20"  valign="middle"border="1"></a>点击图片刷新
  <inputtype="submit"name="login"value="提交"></td>
</form>
</body>
</html>
check.jsp

XHTML
1
2
3
4
5
6
7
8
9
10
<%@pagecontentType="text/html; charset=gb2312"language="java"%>
<%
    Stringrand=(String)session.getAttribute("code");
    Stringinput=request.getParameter("code");
    if(rand.equals(input)){
      out.print("<script>alert('验证成功');</script>");
    }else{
      out.print("<script>alert('验证失败');location.href='login.jsp';</script>");
    }
%>



原创粉丝点击