登录功能的开发(带验证码)

原创 2016年08月28日 19:53:59

1.因为要和数据库进行连接,先获取数据源,创建连接对象。这些操作在工具类中完成。

public class DbUtil {
    private static DataSource ds=null;
    //创建连接池
    static{
        Properties p = new Properties();
        try {
            p.load(DbUtil.class.getClassLoader().getResourceAsStream("jdbc.properties"));
           ds = BasicDataSourceFactory.createDataSource(p);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
    //获取与数据库连接的对象
    public static Connection get_Connection(){
        Connection conn=null;
        try {
             conn = ds.getConnection();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return conn;
    }

    //关闭连接
    public static void close_Connection(Connection conn){
        try {
            if(conn!=null&&!conn.isClosed()){
                conn.close();
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

jdbc.properties文件:

driverClassName=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@localhost:1521/orcl
username=student
password=ok
initialSize=5
maxActive=10
maxWait=6000

2.开发dao层的代码:判断在前台输入的用户与数据库中的是否对应。

public boolean isExit(String username,String password){
        //获取连接
        Connection conn = DbUtil.get_Connection();
        try {
            //创建运载sql语句的对象
            PreparedStatement ps = conn.prepareStatement("select * from student where stu_name=? and password=?");
            ps.setString(1, username);
            ps.setString(2, password);
            ResultSet rs = ps.executeQuery();
            //如果在数据库中查到相应的记录,返回true
            while(rs.next()) return true;

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return false;
    }

3.最后开发请求到来时处理请求的servlet。

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        request.setCharacterEncoding("utf-8");
        //获取前台传过来的参数
        String username = request.getParameter("username");
        System.out.println(username);
        String password = request.getParameter("password");
        //验证用户是否存在
        LoginDao dao = new LoginDao();
        //如果存在,页面跳转到success.html
        if(dao.isExit(username, password)){
            response.sendRedirect("success.html");
        }
        else//否则跳转到fail.html
            response.sendRedirect("fail.html");

    }

4.验证码的生成。
首先,向服务器发送一个获取验证码的请求

<img id="check" alt="" src="checkcode">

新建一个Servlet处理这个请求,生成验证码,并返回给浏览器。

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Random r=new Random();
        //1.创建一个bufferedimage对象
        BufferedImage image=new BufferedImage(60, 20, BufferedImage.TYPE_INT_RGB);
        //2.绘制长方形
        Graphics g = image.getGraphics();
        g.setColor(new Color(233, 222, 220));
        g.fillRect(0, 0, 60, 20);
        //画干扰线 ganrao
        for(int i=0;i<100;i++){
            g.setColor(new Color(160+r.nextInt(30), 160+r.nextInt(30), 160+r.nextInt(30)));
            int x=r.nextInt(60);
            int y=r.nextInt(20);
            g.drawLine(x, y, x+r.nextInt(15), y+r.nextInt(15));
        }
        //写上四位随机数字
        g.setColor(new Color(22, 30, 44));
        int checkCode=r.nextInt(9000)+1000;
        g.drawString(checkCode+"", 10, 15);
        //构建输出流,将图片返回到浏览器
        OutputStream out = response.getOutputStream();
        ImageIO.write(image, "jpg", out);
    }

附加功能:看不清图片上的验证码,想要重新生成一个,用jQuery实现,重新发送一个请求。

$(function(){
        $("#change").click(function(){

            $("#check").attr("src",'checkcode?hhh='+Math.random());
        });
    })

简单的登录、注册以及带有验证码功能

Login.aspx页面            .style1 { font-size: 13px;  font-family: "黑体";  font-...
  • y306984159
  • y306984159
  • 2017年05月29日 08:55
  • 374

Web登录常用验证码功能

目前大多网站登录时要么是回答一个问题,要么是输入验证码,主要是基于安全性方面的考虑,至于怎样使用验证码,我觉得有必要说一下,很多人上网一搜很多程序却不知道怎么用,为此我要详细讲解一下 先说第一种...
  • zhangruhong168
  • zhangruhong168
  • 2014年05月05日 19:19
  • 5261

Servlet实现带验证码登陆功能Demo

“纸上得来终觉浅”,动手比看书印象更深,学到的更多。下面用Servlet实现简单的带验证码的登陆功能,来巩固对Servlet的学习。...
  • dutsoft
  • dutsoft
  • 2014年11月25日 17:54
  • 3107

如何写一个含验证码的登录界面

如何写一个含验证码的登录界面标签: 验证码,登录界面,jquery一个包含用户名,密码,验证码的简单的登陆界面,如下图所示:首先是 HTML 代码: ...
  • github_37483541
  • github_37483541
  • 2017年02月09日 18:19
  • 6538

Python爬虫实现验证码登录

很多网站为了避免被恶意访问,需要设置验证码登录,避免非人类的访问,Python爬虫实现验证码登录的原理则是先到登录页面将生成的验证码保存下来,然后人为输入后,包装后再POST给服务器,实现验证,这里还...
  • qq_27717921
  • qq_27717921
  • 2016年11月13日 15:17
  • 6668

VC显示网页验证码

效果截图:
  • friendan
  • friendan
  • 2014年07月10日 19:55
  • 2785

java 模拟登录含验证码

其实一直有个hacker的心,尼玛没有hacker的命啊! 心血来潮想试试用java 如何模拟登录,在网上找了很久的资料,自己大体实现了这个功能。 第一步:获取网站登录的验证码,同时要或许cookie...
  • ljj9oo9
  • ljj9oo9
  • 2015年08月20日 16:06
  • 4412

【java】Java验证码功能实现

一、前言      验证码可以说在我们生活中已经非常普遍了,任何一个网站,任何一个App都会有这个功能,但是为啥要有这个呢?如何做才能做出来呢?下面小编会带领大家一起用java完成一个验证码的功能。二...
  • kisscatforever
  • kisscatforever
  • 2017年02月08日 18:29
  • 598

带图形验证码的登录模块

1、生成图片用到的类         (1)BufferedImage图像数据缓冲区。         (2)Graphics绘制图片 (3)Color获得颜色 (4)Random生成随机数 (5)I...
  • qq208617107
  • qq208617107
  • 2016年03月31日 21:07
  • 1016

使用session的带验证码的登陆练习

预知内容: 1、图片验证码是防止暴力破解机制。计算机目前还是很难识别图形的。但是人眼却可以轻松的认出来!2、rand.Next(1000,10000)左闭右开的区间   1、、在模板页中添加...
  • xcl13014673050
  • xcl13014673050
  • 2015年07月06日 14:53
  • 293
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:登录功能的开发(带验证码)
举报原因:
原因补充:

(最多只允许输入30个字)