图书管理系统( JSP + JDBC + Servlet )实现-03:项目搭建 & 工具类的实现 &依赖导入

Posted Z && Y

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图书管理系统( JSP + JDBC + Servlet )实现-03:项目搭建 & 工具类的实现 &依赖导入相关的知识,希望对你有一定的参考价值。

01: 流程分析和数据库建表阶段
02: 编写和配置过滤器(防止页面乱码)
03:项目搭建 & 工具类的实现 &依赖导入
04: 建立数据库的实体类(pojo)
05: 实现登录功能
06: 查询所有书籍功能
07:模糊查询功能
08:页面所有功能实现(附源码下载)

1.4 创建项目(后面全程使用IDEA)

可以不用Maven项目, 我只是为了方便导入依赖才选择的Maven项目,你们只需要导入相关的依赖就行了。

在这里插入图片描述

选中Maven项目,Maven是一个项目管理工具,最大的好处是可以方便的导入依赖
在这里插入图片描述
配置项目基本信息
在这里插入图片描述

增加Web支持
在这里插入图片描述


1.5 编写数据库配置文件

在这里插入图片描述

database.properties

# 配置数据库驱动
driver=com.mysql.cj.jdbc.Driver
# 数据库地址
url=jdbc:mysql://localhost:3306/cqutlms?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
# 配置数据库用户名
user=root
# 配置密码
password=317525

1.6 建立操作数据库的公共类

遵循高耦合,低内聚的思想,封装公共的工具类是非常好的习惯

在这里插入图片描述
BaseDao.java

package com.tian.utils;

import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

/**
 * ClassName: BaseDao
 * Description: 操作数据库的基类(工具类)
 *
 * @author Tianjiao
 * @date 2021/5/27 21:56
 */
public class BaseDao {
    // 静态代码块,在类加载的时候执行
    static {
        init();
    }

    private static String driver;
    private static String url;
    private static String user;
    private static String password;

    /**
     * MethodName: init
     * Description: 初始化连接参数,从配置文件里获得
     *
     * @return void
     * @date 2021/5/27 22:00
     * @params: []
     * @author Tianjiao
     */
    public static void init() {
        Properties params = new Properties();
        InputStream is = BaseDao.class.getClassLoader().getResourceAsStream("database.properties");
        try {
            params.load(is);
        } catch (IOException e) {
            e.printStackTrace();
        }
        driver = params.getProperty("driver");
        url = params.getProperty("url");
        user = params.getProperty("user");
        password = params.getProperty("password");
    }

    /**
     * MethodName: getConnection
     * Description: 获取数据库连接
     *
     * @return java.sql.Connection
     * @date 2021/5/27 22:00
     * @params: []
     * @author Tianjiao
     */
    public static Connection getConnection() {
        Connection connection = null;
        try {
            //   加载数据库驱动
            Class.forName(driver);
            connection = DriverManager.getConnection(url, user, password);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return connection;
    }

    /**
     * MethodName: execute
     * Description: 查询操作
     *
     * @return java.sql.ResultSet
     * @date 2021/5/27 22:01
     * @params: [connection, preparedStatement, rs, sql, params]
     * @author Tianjiao
     */
    public static ResultSet execute(Connection connection, PreparedStatement preparedStatement, ResultSet rs,
                                    String sql, Object[] params) throws Exception {
        preparedStatement = connection.prepareStatement(sql);
        for (int i = 0; i < params.length; i++) {
            // 占位符从1开始,但是数组是从0开始
            preparedStatement.setObject(i + 1, params[i]);
        }
        rs = preparedStatement.executeQuery();
        return rs;
    }

    /**
     * MethodName: execute
     * Description: 增删改操作
     *
     * @return int
     * @date 2021/5/27 22:02
     * @params: [connection, preparedStatement, sql, params]
     * @author Tianjiao
     */
    public static int execute(Connection connection, PreparedStatement preparedStatement,
                              String sql, Object[] params) throws Exception {
        int updateRows = 0;
        preparedStatement = connection.prepareStatement(sql);
        for (int i = 0; i < params.length; i++) {
            preparedStatement.setObject(i + 1, params[i]);
        }
        updateRows = preparedStatement.executeUpdate();
        return updateRows;
    }

    /**
     * MethodName: closeResource
     * Description: 关闭资源
     *
     * @return boolean
     * @date 2021/5/27 22:02
     * @params: [connection, preparedStatement, rs]
     * @author Tianjiao
     */
    public static boolean closeResource(Connection connection, PreparedStatement preparedStatement, ResultSet rs) {
        boolean flag = true;
        if (rs != null) {
            try {
                rs.close();
                rs = null;
            } catch (SQLException e) {
                e.printStackTrace();
                flag = false;
            }
        }
        if (preparedStatement != null) {
            try {
                preparedStatement.close();
                // 垃圾回收, 设置为空后, JVM会自动回收
                preparedStatement = null;
            } catch (SQLException e) {
                e.printStackTrace();
                flag = false;
            }
        }
        if (connection != null) {
            try {
                connection.close();
                // 垃圾回收, 设置为空后, JVM会自动回收
                connection = null;
            } catch (SQLException e) {
                e.printStackTrace();
                flag = false;
            }
        }
        return flag;
    }
}

1.7 导入相关依赖

在这里插入图片描述

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.tian</groupId>
    <artifactId>cqutlms</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencies>
        <!-- Servlet 依赖 -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
        </dependency>
        <!-- Jsp 依赖 -->
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>javax.servlet.jsp-api</artifactId>
            <version>2.3.1</version>
        </dependency>
        <!-- jstl表达式的依赖 -->
        <dependency>
            <groupId>javax.servlet.jsp.jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <!-- standard标签库 -->
        <dependency>
            <groupId>taglibs</groupId>
            <artifactId>standard</artifactId>
            <version>1.1.2</version>
        </dependency>
        <!--连接数据库的驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.25</version>
        </dependency>
    </dependencies>
</project>


以上是关于图书管理系统( JSP + JDBC + Servlet )实现-03:项目搭建 & 工具类的实现 &依赖导入的主要内容,如果未能解决你的问题,请参考以下文章

图书管理系统( ( JSP + JDBC + Servlet ) )实现-06: 查询所有书籍功能

图书管理系统( JSP + JDBC + Servlet)实现-07:模糊查询功能

图书管理系统( JSP + JDBC + Servlet )实现-08:页面所有功能实现

图书管理系统( ( JSP + JDBC + Servlet ) )实现-04: 建立数据库的实体类(pojo)

图书管理系统( JSP + JDBC + Servlet )实现-02: 编写和配置过滤器(防止页面乱码)

图书管理系统( JSP + JDBC + Servlet )实现-03:项目搭建 & 工具类的实现 &依赖导入