jsp登录验证代码

image.jsp用于生成数字图片

<%@ page contentType="image/jpeg;charset=gb2312" 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=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(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="";
String rand="";
for (int i=0;i<4;i++){
      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);
}

// 图象生效
g.dispose();

// 将认证码存入SESSION
session.setAttribute("random",sRand);

// 输出图象到页面
ImageIO.write(image, "JPEG", response.getOutputStream());
%>

login.jsp用于进入登陆界面:

<%@ page contentType="text/html; charset=gb2312" language="java"    errorPage="" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%
    String Username=request.getParameter("Username");
    String Password=request.getParameter("Password");
    String input= request.getParameter("rand");

    if (Username!=null && Password!=null)
    {
    //把用户名和密码保存在session中
    session.setAttribute("user_name",Username);
    session.setAttribute("pass_word",Password);
    session.setAttribute("input",input);

    //验证用户输入的验证码是否正确
if(input.equals(session.getAttribute("random")))
{

     //如果正确就跳转到check.jsp验证用户名密码
    response.sendRedirect("check.jsp");
      

}
else
{
     //验证码不正确
     out.print("错误");
    // JOptionPane.showMessageDialog(null,"请选择文件!","提示",JOptionPane.ERROR_MESSAGE);
}

    }
%>


<script type="text/javascript">
function check()
{
    if (form.Username.value=="")
    {
      alert("请输入用户名!!!");
      form.Username.focus();
      return false;
    }
    if (form.Password.value=="")
    {
      alert("请输入密码!!!");
      form.Username.focus();
      return false;
    }
}
</SCRIPT>

<html>
<HEAD>
    <title>用户登陆</title>
</HEAD>
<BODY>
<form name="form" οnsubmit="return check()" action="login.jsp" method="post">
<TABLE width=265 align=center border=0>
    <TBODY>
      <TR align=center valign="middle">
        <TD colspan="2">
          <STRONG>登录</STRONG>
        </TD>
      </TR>

      <tr>
        <td height="54" align="center">用户名:</td>
        <td width="181" height=54>
          <input id=Username name=Username>
        </TD>
     </TR>

      <tr>
        <td height="54" align="center">密码:</td>
        <td width="181" height=54>
          <input id=Password type=Password name=Password>
        </TD>
      </TR>
     
     <tr>
        <td height="54" align="center">认证码:</td>
        <td width="181" height=54>
        <input type=text name=rand maxlength=4 value="" size=6>
      &nbsp;&nbsp;
        <img border=1 src="image.jsp">
        </td>
   
     
      </tr>
      <TR>

        <TD colspan="2" align=center>
          <INPUT type=submit value=登陆>
          <INPUT type=reset value=重置>
        </TD>
      </TR>
    </TBODY>
</TABLE>
</FORM>
</BODY>
</HTML>
check.jsp用于测试是否成功:

<%@ page contentType="text/html; charset=gb2312"    language="java" errorPage=""%>
<%@ page import="java.sql.*" %>

<jsp:useBean id="sqltest" class="database.sqlbean" scope="page">
</jsp:useBean>
<html>
<head>
<title>认证码验证页面</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="0">
</head>
<body>
<%
    String rand =(String)session.getAttribute("random");
    String input =(String)session.getAttribute("input");
    String user_name= (String)session.getAttribute("user_name");
    String pass_word= (String)session.getAttribute("pass_word");
%>
系统产生的认证码为:
<%= rand %><br>
您输入的认证码为:
<%= input %><br>
<font color=green>验证码输入相同,认证成功!</font><br>
<br>
您输入的用户名为:
<%=    session.getAttribute("user_name") %><br>
密码为:
<%=    session.getAttribute("pass_word") %><br>

<%
    String permit;
    ResultSet rs=null;
    String SqlString="select * from UserInfo where username='"+user_name+"'and password='"+pass_word+"'";
try
    {
      //设置连接
      sqltest.setConnection("com.microsoft.jdbc.sqlserver.SQLServerDriver",
        "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=university",
        "admin","123456");
      //设置SQL语句
      sqltest.setQuerystatement(SqlString);
      //得到查询结果
      rs=sqltest.getResult();
      if (rs.next())
      {
         out.print("登陆成功");
         //获得用户的权限
         permit=rs.getString("permit");
         if (permit.equals("1"))
         {
           out.println(":你的权限是管理员组");
         }
         else
         {
           out.println(":你的权限是用户组");
         }
      }
      else
      {
          out.print("登陆失败,用户名或密码错");
      }
    }
    catch(SQLException e1)
    {
      out.print("SQL异常!");
    }

%>
</body>
</html>
连接数据库的Javabean:          sqlbean.java

package database;
import java.sql.*;
public class sqlbean {
public String query_statement;
public ResultSet result=null;
public Connection conn;

public void setQuerystatement(String query_statement)
{
    this.query_statement=query_statement;
}

public void setConnection(String driverName ,String jdbcURL,
     String username,String passwd) throws Exception
{
    Connection conn1;
    Class.forName(driverName);
    conn1=DriverManager.getConnection(jdbcURL, username, passwd);
    conn1.setAutoCommit(false);
    this.conn = conn1;
}

public ResultSet getResult()
{
    try
    {
     PreparedStatement select_stm=conn.prepareStatement(query_statement,
       java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
     result=select_stm.executeQuery();
    }
    catch(Exception e)
    {
     System.out.println(e);
    }
    return result;
}
}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值