本帖最后由 ok5126ok 于 2010-09-16 08:11:29 编辑

解决方案 »

  1.   

    http://download.csdn.net/source/970523这有源码,免费拿去
      

  2.   

    <%@ 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);
            }
    %>
    <%
    //设置页面不缓存
    response.setHeader("Pragma","No-cache");
    response.setHeader("Cache-Control","no-cache");
    response.setDateHeader("Expires", 0);// 在内存中创建图象
    int width=60, height=18;
    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(new Color());
    //g.drawRect(0,0,width-1,height-1);// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
    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);
    }// 取随机产生的认证码(4位数字)
    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());
    %>---------------------------------用户密码验证码核对-------------------------------------------//////////文件名 check.jsp<%@ page contentType="text/html; charset=gb2312"%>
    <%@ page import="java.sql.*"%> 
    <%@ page import="java.util.*"%>
    <%@ page import="java.util.Date"%>
    <%@ page import="java.text.*"%>
    <%@ include file="../conn.jsp"%>
    <%
    String username = new String(request.getParameter("adminname").getBytes("iso-8859-1"));
    String pass = new String(request.getParameter("password").getBytes("iso-8859-1"));
       String useryz = request.getParameter("useryz");
    String rand = (String)session.getAttribute("rand");if (rand.equals(useryz))
         {
    //String sql=;
        ResultSet rs=stmt.executeQuery("select * from admin where admin='"+username+"'");
    if (rs.next())
         {
       String admin=rs.getString("admin");
       String adminpwd=rs.getString("adminpwd");
       String qs=rs.getString("qs");
       String adminqs=rs.getString("adminqs");
       if(adminpwd.equals(pass)){
         session.setAttribute("admin",admin);
         session.setAttribute("adminpwd",adminpwd);
         session.setAttribute("qs",qs);
         session.setAttribute("adminqs",adminqs);     out.print("<script language='javascript'>");
         out.print("window.location.href='admin_index.jsp';");
         out.print("</script>");
         out.close();  
       }
            else{
          out.print("<script>");
             out.print("alert('用户名或密码错误');");
             out.print("window.location.href='index.jsp';");
             out.print("</script>");
         }
       }
    else{
          out.print("<script>");
             out.print("alert('用户名或密码错误');");
             out.print("window.location.href='index.jsp';");
             out.print("</script>"); 

    stmt.close(); 
         conn.close();
    //}
    }
    else
    {
          out.print("<script>");
             out.print("alert('验证码输入有误!请核对!');");
             out.print("window.location.href='index.jsp';");
             out.print("</script>"); 
    }
    %>---------------------------------登陆页面--------------------------------------------///////////文件名------index.jsp<%@ page contentType="text/html; charset=gb2312"%>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>飞天论坛 ——管理员登录</title>
    </head>
    <style type=text/css>
    body {
        background:#EFEFEF;
        font-size: 12px;
        margin-top:0px;
    }INPUT {    FONT-SIZE: 12px;
        font-family: "宋体";
    }
    SPAN {
        FONT-SIZE: 12px; POSITION: static
    }
    a:link,a:visited {
        color: #0033FF;
        text-decoration: none;
    }
    </style>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <table align=center width=380 style="border: outset 3px;" cellpadding=0 cellspacing=0 ID="Table1">
        <tr>
            
        <td style="padding:3px;background-color:blue;color:white;FONT-SIZE:13px;">管理员登录--BBS论坛          </td>
        </tr>
        <tr valign=top>
            
        <td><img src="../image/title.gif" width="248" height="35"></td>
        </tr>
        <tr>
            <td style="padding:15px;">
    <script language="Javascript">
    <!--
    function VF_loginform(){
        var theForm = document.loginform;
        var numRE = /^\d+$/;
        var errMsg = "";
        var setfocus = "";    if (!numRE.test(theForm['useryz'].value)){
            errMsg = "请填写右边的确认验证码。";
            setfocus = "['verifycode']";
        }
        if (theForm['password'].value == ""){
            errMsg = "请填写登录密码!";
            setfocus = "['password']";
        }
        if (theForm['username'].value == ""){
            errMsg = "请填写登录用户名!";
            setfocus = "['username']";
        }
        if (errMsg != ""){
            alert(errMsg);
            eval("theForm" + setfocus + ".focus()");
        }
        else theForm.submit();
    }//-->
    </script>
            <table border="0">
            <form action="check.jsp" method="post" name="loginform" onSubmit="VF_loginform();return false;"> 
              <tr>
                <td><span style="width:80px;">用户名:</span></td>
                <td><input maxlength=20 type="text" name="adminname" style="width:200px;" tabindex="1"></td>
              </tr>
              <tr>
                <td><span style="width:80px;">密 码:</span></td>
                <td><input maxlength=20 type="password" name="password" style="width:200px;"></td>
              </tr>
              <tr>
                <td><span style="width:80px;">验证码:</span></td>
                <td style="FONT-SIZE: 12px;"><input name="useryz" type="text" id="useryz" style="width:62px;" value="" maxlength=4> 
                验证码输入:<img src=image.jsp border=0></td>
              </tr>
              <tr>
                <td>&nbsp;</td>
                <td align="right">&nbsp;</td>
              </tr>
              <tr>
                <td>&nbsp;</td>
                <td align="right"><input type="submit" value="登 录" name="btnSubmit" style="width:80px;font:menu;" ID="Submit1"></td>
              </tr>
              </form> 
            </table>        </td>
        </tr>
    </table>
    <br><br>
    </body>
    </html>---------------------------------access数据库连接文件-------------------------------///文件名 conn.jsp
    <%
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    Connection conn=DriverManager.getConnection("jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=webapps/hzx/db/db.mdb;");//数据库
    Statement stmt=conn.createStatement();
    %>