目录
一、项目搭建准备工作
1、搭建一个maven web项目
2、配置Tomcat
3、测试项目是否能够跑起来
4、导入项目中会遇到的jar包(servlet、jsp、mysql驱动、jstl、standard)
5、创建项目包结构(pojo、dao、service、servlet、util、filter)
6、编写实体类(ORM 表-类映射)
7、编写基础公共类
1、数据库配置文件
2、编写数据库的公共类
package com.liang.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) {
throw new RuntimeException(e);
}
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(driver);
connection = DriverManager.getConnection(url, username, password);
} catch (Exception e) {
throw new RuntimeException(e);
}
return connection;
}
//编写查询公共方法
public static ResultSet execute(Connection connection,String sql,Object[] params,PreparedStatement preparedStatement,ResultSet resultSet) throws Exception{
//预编译的sql,在后面直接执行就可以了,后一步不用传参
preparedStatement = connection.prepareStatement(sql);
for (int i = 0; i < params.length; i++) {
//setObject,占位符从1开始,但数组是从0开始的,所以使用i+1
preparedStatement.setObject(i+1,params[i]);
}
resultSet = preparedStatement.executeQuery();
return resultSet;
}
//编写增删改公共方法
public static int execute(Connection connection,String sql,Object[] params,PreparedStatement preparedStatement,int i)throws Exception{
preparedStatement = connection.prepareStatement(sql);
for (int j = 0; j < params.length; j++) {
preparedStatement.setObject(j+1,params[j]);
}
i = preparedStatement.executeUpdate();
return i;
}
//释放资源
public static boolean close(Connection connection,PreparedStatement preparedStatement,ResultSet resultSet){
boolean flag = true;
if(resultSet!=null){
try {
resultSet.close();
//GC回收
resultSet = null;
} catch (SQLException e) {
flag = false;
throw new RuntimeException(e);
}
}
if(preparedStatement!=null){
try {
preparedStatement.close();
//GC回收
preparedStatement = null;
} catch (SQLException e) {
flag = false;
throw new RuntimeException(e);
}
}
if(connection!=null){
try {
connection.close();
//GC回收
connection = null;
} catch (SQLException e) {
flag = false;
throw new RuntimeException(e);
}
}
return flag;
}
}
3、编写字符编码过滤器
8、导入静态资源
二、登录功能实现
1、编写前端页面
2、设置首页(欢迎页)
3、编写dao层,得到登录用户的接口
4、编写dao层的实现类
5、业务层接口
6、业务层实现类
7、编写Servlet
8、 注册Servlet
9、测试访问,确保以上功能成功!
三、注销功能实现
1、移除Session,返回登录页面
2、注册Servlet
四、登录拦截实现
1、编写一个过滤器,并注册