Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 917|回复: 0

JSP登陆页面验证

[复制链接]

该用户从未签到

发表于 2011-7-31 21:50:03 | 显示全部楼层 |阅读模式
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(&quotragma","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" 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>
        
        <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;
}
}
回复

使用道具 举报

  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2011-7-31 22:26:52 | 显示全部楼层
    谢谢楼主分享。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-24 02:39 , Processed in 0.414842 second(s), 51 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表