# JavaEE+JDBC+Servlet的员工信息管理系统
**Repository Path**: LovelyHzz/java-ee-jdbc-servlet
## Basic Information
- **Project Name**: JavaEE+JDBC+Servlet的员工信息管理系统
- **Description**: 简易的员工管理系统,包括信息的增删改查,新增员工图像
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 21
- **Forks**: 1
- **Created**: 2021-09-25
- **Last Updated**: 2025-10-13
## Categories & Tags
**Categories**: Uncategorized
**Tags**: Java, JDBC, el, Servlet, 员工管理
## README
# :heart: JavaEE+JDBC+Servlet+EL表达式的员工信息管理系统
## 介绍
简易的员工管理系统,包括信息的增删改查,新增员工图像
前端:`HTML`,`CSS`,`JavaScript`,`jQuery`,`EL表达式`,`jsp`
后端:`JavaEE`,`servlet`(创建servlet,使用get和post请求处理数据;使用Request,Response,session存储数据),`JDBC`(德鲁伊数据库连接池,使用QueryRunner处理数据)
和上一次系统[bootstrap+JavaEE+JDBC+JSP的信息管理系统](https://gitee.com/LovelyHzz/Info-management-system)相比
1. 使用了servlet把业务处理代码放在后台处理,删除了不必要的jsp页面
2. 使用El表达式展示数据,不用在前台获取一遍session数据
**2021/9/27 更新**
1. 新增分页功能,包括所有用户和部门用户分页;使用PageUtils分页工具类
**2021/10/8 更新**
1. dao层和service层部分采用单例模式(懒汉式-不支持多线程)
2. service层部门采用工厂模式
## 源码
[v1.0 - servlet-v1.0](https://gitee.com/LovelyHzz/java-ee-jdbc-servlet/tree/master/servlet-v1.0)
[v2.0 - servlet-v2.0](https://gitee.com/LovelyHzz/java-ee-jdbc-servlet/tree/master/servlet-v2.0)
[v3.0 - servlet-v3.0](https://gitee.com/LovelyHzz/java-ee-jdbc-servlet/tree/master/servlet-v3.0)
[v4.0 - servlet-v4.0](https://gitee.com/LovelyHzz/java-ee-jdbc-servlet/tree/master/servlet-v4.0)
## 项目展示效果
### 主页

### 注册

### 员工列表



### 修改



### 删除




### 添加头像


### 分页

## 数据库设计
MySQL数据库
```text
员工表(员工编号,员工姓名,性别,部门编号,工资,地址,职位,头像文件名称)
部门表(部门编号,部门名称)
```
```sql
create table employee(
eid int auto_increment primary key,
ename varchar(20),
sex varchar(3),
pid int,
salary double(12,2),
dizhi varchar(100),
job varchar(20)
)default charset=utf8;
insert into employee values(default,'涂鏊飞','男',802,8000,'武汉市','销售经理',null);
insert into employee values(default,'胡梓卓','男',701,10000,'天门市','项目经理',null);
insert into employee values(default,'李小龙','男',702,9000,'厦门市','开发人员',null);
insert into employee values(default,'董文武','男',702,8500,'黑龙江','开发人员',null);
create table department(
pid int primary key,
pname varchar(50)
)default charset=utf8;
insert into department values(701,'研发部');
insert into department values(702,'市场部');
insert into department values(802,'销售部');
alter table employee add constraint fk_pid foreign key(pid) references department(pid);
#on delete cascade on update cascade;
select * from employee;
select * from department;
```
## 项目结构


## 主要功能
1. 员工注册
2. 员工列表展示-可筛选部门
3. 删除单个员工,批量删除员工
4. 修改员工信息
5. 双击头像,可提交员工头像
**刷新用户列表无信息,可点击查询所有部门信息**
## db.properties
```java
#通过反射获取获取包
#driverClassName=com.mysql.jc.jdbc.Driver #8.0
driverClassName=com.mysql.jdbc.Driver #5.0 数据库版本
# localhost 本地服务器
# 3306 端口
# demo 数据库名
url=jdbc:mysql://localhost:3306/demo?characterEncoding=utf8&useSSL=false&serverTimezone=UTC
# 用户名
username=root
# 密码
password=123456
```
## utils工具类
```java
package com.servlet.utils;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import org.apache.commons.dbutils.QueryRunner;
import javax.sql.DataSource;
import java.sql.Connection;
import java.util.Properties;
/**
* @author 涂鏊飞tu_aofei@163.com
* @description: 数据库操作工具类 类描述
* @create 2021-09-01 17:18
*/
public class JdbcUtils {
private static DataSource ds;
static {
try {
//1.加载配置文件
Properties pro = new Properties();
pro.load(JdbcUtils.class.getClassLoader().getResourceAsStream("db.properties"));
//2.获取DataSource
ds = DruidDataSourceFactory.createDataSource(pro);
}
catch (Exception e){
ds = null;
}
}
public static Connection getConnection(){
Connection con;
try {
con = ds.getConnection();
}
catch (Exception ex){
con = null;
}
return con;
}
/* 获取 QueryRunner */
public static QueryRunner getQueryRunner(){
QueryRunner runner = new QueryRunner(ds);
return runner;
}
}
```
## pojo数据库映射类
员工头像是新增的功能,Employee类构造方法有两个重载,一个包含file【用来新增图片】,一个不包含【用来插入图片】
员工表:[Employee.java](http://)
部门表:[Department.java](http://)
## dao数据访问层
**Employee接口** `public interface EmployeeDao`
:one: public **Integer** `addEmployee(Employee emp)` throws SQLException; // 增加员工
:two: public **List** `selectAllEmployee()` throws SQLException;// 查询所有员工
:three: public **Integer** `delEmployee(Integer eid)` throws SQLException;// 根据eid删除员工
:four: public **Integer** `conditiondelEmployee(Integer[] eid)` throws SQLException;// 根据eid批量删除员工
:five: public **List** `selectConditionEmployee(Integer pid)` throws SQLException;// 根据pid查询指定的员工
:six: public **Employee** `selectOneEmployee(Integer eid)` throws SQLException;// 根据eid查询指定的员工
:seven: public **Integer** `editOneEmployee(Integer eid,Employee employee)` throws SQLException;// 根据eid修改员工信息
:eight: public **Integer** `addUserImage(Integer eid,String file)` throws SQLException;// 根据eid新增用户图片
**Department接口** `public interface DepartmentDao`
:one: public **List** **selectAllDepartment()** throws SQLException;// 获取所有部门信息
:two: public **Department** **selectOneDepartment(Integer pid)** throws SQLException;// 根据pid获取对应的部门信息
## service业务逻辑层
**EmployeeService接口**
```java
public interface EmployeeService {
// 增加员工
public Integer addEmployee(Employee emp) throws SQLException;
// 查询所有员工
public List selectAllEmployee() throws SQLException;
// 根据eid删除员工
public Integer delEmployee(Integer eid) throws SQLException;
// 根据eid批量删除员工
public Integer conditiondelEmployee(Integer[] eid) throws SQLException;
// 根据pid查询指定的员工
public List selectConditionEmployee(Integer pid) throws SQLException;
// 根据eid查询指定的员工
public Employee selectOneEmployee(Integer eid) throws SQLException;
// 根据eid修改员工信息
public Integer editOneEmployee(Integer eid,Employee employee) throws SQLException;
// 根据eid新增用户图片
public Integer addUserImage(Integer eid,String file) throws SQLException;
}
```
**DepartmentService接口**
```java
public interface DepartmentService {
// 获取所有部门信息
public List selectAllDepartment() throws SQLException;
// 根据pid获取对应的部门信息
public Department selectOneDepartment(Integer pid) throws SQLException;
}
```
## web servlet类,处理请求
:one: 增加员工 [Employee_add_servlet.java](https://gitee.com/LovelyHzz/java-ee-jdbc-servlet/blob/master/servlet/src/com/servlet/web/Employee_add_servlet.java)
:two: 查询员工 [employee_select.java](https://gitee.com/LovelyHzz/java-ee-jdbc-servlet/blob/master/servlet/src/com/servlet/web/employee_select.java)
:three: 修改员工信息,不包含头像,提交到数据库 [Employee_alter.java](https://gitee.com/LovelyHzz/java-ee-jdbc-servlet/blob/master/servlet/src/com/servlet/web/Employee_alter.java)
:four: 批量删除员工 [Employee_conditionDel.java](https://gitee.com/LovelyHzz/java-ee-jdbc-servlet/blob/master/servlet/src/com/servlet/web/Employee_conditionDel.java)
:five: 选择部门查询 [Employee_conditionSelect.java](https://gitee.com/LovelyHzz/java-ee-jdbc-servlet/blob/master/servlet/src/com/servlet/web/Employee_conditionSelect.java)
:six: 删除员工 [employee_del.java](https://gitee.com/LovelyHzz/java-ee-jdbc-servlet/blob/master/servlet/src/com/servlet/web/employee_del.java)
:seven: 获取修改后的员工信息 [Employee_edit.java](https://gitee.com/LovelyHzz/java-ee-jdbc-servlet/blob/master/servlet/src/com/servlet/web/Employee_edit.java)
:eight: 在增加员工之间处理 [Employee_toadd_servlet.java](https://gitee.com/LovelyHzz/java-ee-jdbc-servlet/blob/master/servlet/src/com/servlet/web/Employee_toadd_servlet.java)
:nine: 获取要添加头像的员工id,设置session [Employee_uploadfile.java](https://gitee.com/LovelyHzz/java-ee-jdbc-servlet/blob/master/servlet/src/com/servlet/web/Employee_uploadfile.java)
:keycap_ten: 处理图片名称,上传到服务器和数据库,删除原文件 [FileServlet.java](https://gitee.com/LovelyHzz/java-ee-jdbc-servlet/blob/master/servlet/src/com/servlet/web/FileServlet.java)
11. 测试EL表达式 [elSvl.java](http://)
## web目录
