javaweb项目笔记 - yunfanfan/Notes GitHub Wiki
SMBMS
项目搭建
-
搭建一个maven web项目
-
配置Tomcat
-
测试项目是否能顺利运行
-
导入项目中会遇到的jar包:jsp, servlet, mysql驱动, jstl, standard
-
创建项目包结构
-
编写实体类
ORM映射:表-类映射
-
编写基础公共类
-
数据库配置文件
driver=com.mysql.cj.jdbc.Driver url=jdbc:mysql://localhost:3306?useUnicode=true&characterEncoding=utf-8 user=root password=sdznnysqt
-
编写数据库公共类
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; } }
- 编写字符编码过滤器
-
-
导入静态资源
登录功能实现
- 编写前端页面
- 设置欢迎页面
- 编写dao层登录用户登录的接口
- 编写dao接口的实现类
- 业务层接口
- 业务层实现类