javaweb项目笔记 - yunfanfan/Notes GitHub Wiki

SMBMS

项目搭建

  1. 搭建一个maven web项目

  2. 配置Tomcat

  3. 测试项目是否能顺利运行

  4. 导入项目中会遇到的jar包:jsp, servlet, mysql驱动, jstl, standard

  5. 创建项目包结构

    UabkUr

  6. 编写实体类

    ORM映射:表-类映射

  7. 编写基础公共类

    1. 数据库配置文件

      driver=com.mysql.cj.jdbc.Driver
      url=jdbc:mysql://localhost:3306?useUnicode=true&characterEncoding=utf-8
      user=root
      password=sdznnysqt
      
    2. 编写数据库公共类BaseDao.java

    package com.yunfan.dao;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.*;
    import java.util.Properties;
    
    //操作数据库的公共类
    public class BaseDao {
        private static String driver;
        private static String url;
        private static String username;
        private static String password;
    
        //静态代码块,类加载的时候就初始化了
        static {
            Properties properties = new Properties();
            //通过类加载器读取对应的资源
            InputStream is = BaseDao.class.getClassLoader().getResourceAsStream("db.properties");
            try {
                properties.load(is);
            } catch (IOException e) {
                e.printStackTrace();
            }
    
            driver = properties.getProperty("driver");
            url = properties.getProperty("url");
            username = properties.getProperty("username");
            password = properties.getProperty("password");
        }
        //获取数据库的链接
        public static Connection getConnection() {
            Connection connection = null;
            try {
                //Class.forName()作用
                //加载参数指定的类,并且初始化它
                //将驱动类的 class 文件装载到内存中,并且形成一个描述此驱动类结构的 Class 类实例,
                //并且初始化此驱动类,这样 jvm 就可以使用它了
                Class.forName(driver);
                connection = DriverManager.getConnection(url, username, password);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return connection;
        }
    
        //编写查询公共类
        //尽可能多的把参数提出去,可以在外面统一关闭
        public static ResultSet execute(Connection connection, String sql, Object[] params, ResultSet resultSet, PreparedStatement preparedStatement) throws SQLException {
            preparedStatement = connection.prepareStatement(sql);
    
            for (int i = 0; i < params.length; i++) {
                //setObject: 占位符从1开始,但是数组从0开始
                preparedStatement.setObject(i+1, params[i]);
            }
            resultSet = preparedStatement.executeQuery();
            return resultSet;
        }
    
        //编写增删改公共方法
        public static int execute(Connection connection, String sql, Object[] params, PreparedStatement preparedStatement) throws SQLException {
            preparedStatement = connection.prepareStatement(sql);
    
            for (int i = 0; i < params.length; i++) {
                //setObject: 占位符从1开始,但是数组从0开始
                preparedStatement.setObject(i+1, params[i]);
            }
            int updateRows = preparedStatement.executeUpdate();
            return updateRows;
        }
    
        //释放资源
        public static boolean closeResources(Connection connection, PreparedStatement preparedStatement, ResultSet resultSet) {
            boolean flag = true;
    
            if (resultSet != null) {
                try {
                    resultSet.close();
                    //GC回收
                    resultSet = null;
                } catch (SQLException e) {
                    e.printStackTrace();
                    flag = false;
                }
            }
    
            if (preparedStatement != null) {
                try {
                    preparedStatement.close();
                    //GC回收
                    preparedStatement = null;
                } catch (SQLException e) {
                    e.printStackTrace();
                    flag = false;
                }
            }
    
            if (connection != null) {
                try {
                    connection.close();
                    //GC回收
                    connection = null;
                } catch (SQLException e) {
                    e.printStackTrace();
                    flag = false;
                }
            }
            return flag;
        }
    }
    
    1. 编写字符编码过滤器
  8. 导入静态资源

登录功能实现

wDPElW

  1. 编写前端页面
  2. 设置欢迎页面
  3. 编写dao层登录用户登录的接口
  4. 编写dao接口的实现类
  5. 业务层接口
  6. 业务层实现类