JDBC工具类实现登录功能

本文实例为大家分享了JDBC工具类实现登录功能的具体代码,供大家参考,具体内容如下

我们使用JDBC实现数据库的增删改查,代码基本差不多,有很多重复,所以我们可以把这些重复的代码写成一个工具类,使用的时候直接调用就可以了。下面以实现登录功能的案例来介绍。

创建数据库,插入数据

use student;
create table user(
 id int primary key auto_increment,
    username varchar(32),
    password varchar(32)
);

insert into user values(null,'zhangsan','123');
insert into user values(null,'lisi','234');

jdbc.properties

url=jdbc:mysql://localhost:3306/student
username=root
password=root
driver=com.mysql.jdbc.Driver

JDBC工具类

package cn.itcast.util;

import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import java.sql.*;
import java.util.Properties;

/**
 *   JDBC工具类
 **/
public class JDBCUtils {
    private static String url;
    private static String username;
    private static String password;
    private static String driver;
    /**
     * 文件的读取,著需要读取一次即可拿到这些值,使用静态代码块
     **/
    static {

        try {
            //1、读取资源文件,获取值
            Properties properties = new Properties();

            //获取src路径下的文件的方式 ---> ClassLoader类加载器
            ClassLoader classLoader = JDBCUtils.class.getClassLoader();
            URL resource = classLoader.getResource("jdbc.properties");
            String path = resource.getPath();

            //2、加载文件
            properties.load(new FileReader(path));
            //3、获取数据,赋值
            url = properties.getProperty("url");
            username = properties.getProperty("username");
            password = properties.getProperty("password");
            driver = properties.getProperty("driver");
            //4、注册驱动
            Class.forName(driver);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    /**
     * 获取连接
     * @return 连接对象
     */
    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(url,username,password);
    }

    /**
     * 释放资源
     * @param statement
     * @param connection
     */
    public static void close(Statement statement,Connection connection) {
        if (statement != null) {
            try {
                statement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (connection != null) {
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 释放资源
     * @param resultSet
     * @param statement
     * @param connection
     */
    public static void close(ResultSet resultSet,Statement statement, Connection connection) {
        if (resultSet != null) {
            try {
                resultSet.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (statement != null) {
            try {
                statement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (connection != null) {
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

实现登录功能

package cn.itcast.jdbc;

import cn.itcast.util.JDBCUtils;

import java.sql.*;
import java.util.Scanner;

/**
 *  1、通过键盘录入用户名和密码
 *  2、判断用户是否登录成功
 */
public class JDBCLogin {

    public static void main(String[] args) {
        //1、键盘录入,接收用户和密码
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入用户名:");
        String username = sc.nextLine();
        System.out.println("请输入密码:");
        String password = sc.nextLine();
        //2、调用方法
        boolean flag = new JDBCLogin().login(username,password);
        //3、判断
        if (flag) {
            System.out.println("登录成功");
        } else {
            System.out.println("用户名或密码错误!");
        }
    }

    /**
     * 登录方法
     */

    public boolean login(String username,String password) {
        if (username == null || password == null) {
            return false;
        }
        //连接数据库判断是否登陆成功

        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        try {
            //1、获取链接
            connection = JDBCUtils.getConnection();
            //2、定义sql
            String sql = "select * from user where username = ? and password = ?";
            //3、获取执行sql的对象
            //为了防止sql注入,实现事务安全,效率更高,必须要用PreparedStatement
            preparedStatement = connection.prepareStatement(sql);
            //给?赋值
            preparedStatement.setString(1,username);
            preparedStatement.setString(2,password);
            //4、执行查询,不需要传递sql
            resultSet = preparedStatement.executeQuery();
            //5、判断:如果是下一行,则返回true
            return resultSet.next();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JDBCUtils.close(resultSet,preparedStatement,connection);
        }
        return false;
    }
}

运行结果:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Spring+SpringMVC+JDBC实现登录的示例(附源码)

    有一位程序员去相亲的时候,非常礼貌得说自己是一名程序员,并解释自己是做底层架构的,于是女方听到"底层"两个字,就一脸嫌弃:什么时候能够到中高级? 用久了框架,把原生都忘记了,本章从零开始,熟悉一遍JDBC实现增删改查 开发环境 jdk 1.8 Maven 3.6 Spring.SpringMVC 4.3.18 dbcp2 jsp Idea 创建项目 创建项目时,我们选择传统的Maven项目结构 创建项目时不要选择任何模板,直接点Next 填写包名及项目名Next --> Fini

  • JavaWeb实战之用Servlet+JDBC实现用户登录与注册

    一.前言 使用到的技术栈: (1)JDBC (2)Servlet (3)MySQL 二.准备工作 (1)书城用户数据库与表创建 (2)编写用户类对象JavaBean (3)编写JdbcUtils对数据库进行交互(使用德鲁伊数据库连接池) (4)编写web层 最终编写好的第二阶段登陆注册文件结构为 dao中定义了基础的操作数据库代码,具体功能有 1.Insert.update.delete(修改) 2.查询一个对象(返回一个对象) 3.查询一个数组对象(数组返回多个对象) 4.返回某一个特定值对象

  • JDBC工具类实现登录功能

    本文实例为大家分享了JDBC工具类实现登录功能的具体代码,供大家参考,具体内容如下 我们使用JDBC实现数据库的增删改查,代码基本差不多,有很多重复,所以我们可以把这些重复的代码写成一个工具类,使用的时候直接调用就可以了.下面以实现登录功能的案例来介绍. 创建数据库,插入数据 use student; create table user( id int primary key auto_increment, username varchar(32), password varchar(32) )

  • 使用JDBC工具类实现简单的登录管理系统

    使用JDBC工具类实现一个简单的登录管理系统,供大家参考,具体内容如下 实现要求: 在控制台实现一个用户管理系统,包含3个功能: 1.用户登录  2.注册  3.用户查询. 启动程序后,进入主菜单选项: 输出:“请选择您要操作的功能:1.用户登录  2.新用户注册 3所有用户查询: ” 功能说明: 1.用户登录: 请用户输入用户名和密码,接收后,去数据库的users表中查询是否存在该用户名.并输出合理的提示,例如:登录成功!  用户名不存在! 密码错误! 不论登录是否成功,都返回主菜单界面. 2

  • Java使用excel工具类导出对象功能示例

    本文实例讲述了Java使用excel工具类导出对象功能.分享给大家供大家参考,具体如下: package com.gcloud.common; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.xssf.streaming.SXSSFSheet; import

  • java中封装JDBC工具类的实例分析

    对于能够重复使用的代码,我们最好的方法是对它们进行封装,然后在下次使用的使用就可以直接调用了.本篇所要提到的是JDBC工具类,相信大家在学习java时都接触过.那么对于封装它的方法,本篇先对工具类进行简单的说明,列出有关的封装步骤,然后带来相关的实例. 1.说明 在java开发过程中,代码中时常用到一些Scanner.Random一样的类,他们是键盘录入,生成随机数的类,像一个工具一样,在java中被称为工具类. 2.步骤 封装JDBC工具类 加入获取数据库连接对象的方法 加入释放连接的方法 3

  • JavaWeb Servlet实现网页登录功能

    上次写了一篇JDBC工具类实现登录功能,但是只能在控制台实现输入用户名密码.这次使用了Servlet来实现登录功能,可以通过在页面上输入账号密码,然后提交表单,查询数据库,从而实现登录功能. 1.配置文件,导入jar包 2.创建数据库环境 use student; create table user( id int primary key auto_increment, username varchar(32), password varchar(32) ); insert into user

  • 如何使用JDBC实现工具类抽取

    这篇文章主要介绍了如何使用JDBC实现工具类抽取,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.JDBC工具类抽取 上一篇做了JDBC的基本操作,但是获取连接及释放资源是比较重复的操作,可以抽取工具类而达到代码重用的目的 工程结构如图 JDBC工具类代码 db.properties driver=com.mysql.jdbc.Driver url=jdbc:mysql://192.168.47.151:3306/web?useUnicode

  • Java JDBC自定义封装工具类的步骤和完整代码

    封装JDBC工具类的作用可以优化代码,提高开发效率 步骤 ① 创建配置文件(config.properties),用于存放注册驱动和连接数据库时所需要的参数值 ② 自定义一个类(JDBCUtils.java) ③ 实现构造私有方法 private JDBCUtils(){} ④ 声明所需要的配置变量 private static String driverClass; private static String url; private static String username; priva

  • Servlet实现简单的用户登录功能实例代码

    1.创建html界面 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form action="" method="post"> 用户名:<input type=&

  • JavaWeb使用mvc模式实现登录功能

    目录 部署项目.环境搭建 详细内容 登录实现 部署项目.环境搭建 详细内容 1.导包 2.web >> index.jsp              web >> login.jsp              web >> success.jsp 1)  web >> index.jsp <%@ page contentType="text/html;charset=UTF-8" language="java"

  • Java图像处理工具类

    本工具类的功能:缩放图像.切割图像.图像类型转换.彩色转黑白.文字水印.图片水印等 复制代码 代码如下: package net.kitbox.util; import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Re

随机推荐