Servlet学生请假系统
时间: 2023-10-01 14:02:39 浏览: 33
Servlet是一种Java服务器端编程技术,可以在Web服务器中运行,为客户端提供服务。通常,Servlet用于处理动态请求,并向客户端返回动态生成的内容。
假设你正在开发一个学生请假系统,你可能会使用Servlet来处理学生提交的请假申请,并将申请信息存储到数据库中。当学生提交请假申请时,Servlet可以负责验证用户输入的信息是否有效,并在必要时向用户显示错误消息。 Servlet还可以负责检索学生的请假记录并将其呈现给用户。
总的来说,Servlet是一种非常有用的工具,可以帮助你开发动态Web应用程序。
相关问题
请假代码java web_学生请假管理系统
以下是一个简单的学生请假管理系统的 Java Web 代码:
1. 创建一个 Leave 类,表示学生请假信息:
```
public class Leave {
private int id;
private String studentName;
private String startTime;
private String endTime;
private String reason;
private int status; // 0:未审批,1:已批准,2:已拒绝
// getter 和 setter 方法
}
```
2. 创建一个 LeaveDAO 类,用于与数据库交互,实现增删改查功能:
```
public class LeaveDAO {
// 建立数据库连接
private Connection getConnection() throws SQLException {
// ...
}
// 关闭数据库连接
private void closeConnection(Connection conn, Statement stmt, ResultSet rs) {
// ...
}
// 添加请假信息
public boolean addLeave(Leave leave) {
// ...
}
// 删除请假信息
public boolean deleteLeave(int id) {
// ...
}
// 修改请假信息
public boolean updateLeave(Leave leave) {
// ...
}
// 查询请假信息
public Leave getLeave(int id) {
// ...
}
// 查询所有请假信息
public List<Leave> getAllLeaves() {
// ...
}
}
```
3. 创建一个 LeaveServlet 类,用于处理请假信息的请求,包括添加、删除、修改、查询等操作:
```
public class LeaveServlet extends HttpServlet {
private LeaveDAO dao;
// 初始化 DAO 对象
public void init() throws ServletException {
dao = new LeaveDAO();
}
// 处理 GET 请求
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// ...
}
// 处理 POST 请求
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// ...
}
// 关闭 DAO 对象
public void destroy() {
dao = null;
}
}
```
4. 在 web.xml 文件中配置 LeaveServlet 类的映射:
```
<servlet>
<servlet-name>LeaveServlet</servlet-name>
<servlet-class>com.example.LeaveServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LeaveServlet</servlet-name>
<url-pattern>/leave/*</url-pattern>
</servlet-mapping>
```
以上是一个简单的学生请假管理系统的 Java Web 代码,具体的实现细节需要根据实际情况进行调整。
代码实现 学生请假系统 实现学生请假销假和查看信息,管理员批假和查看请假信息,要有界面设计,界面简洁美观 要求使用JDBC连接数据库,使用Java、jsp、web
这个任务可以分为以下几个步骤来完成:
1. 设计数据库结构,并创建数据库和表格。
2. 编写 Java 代码,实现学生请假、销假和查看信息的功能,并使用 JDBC 连接数据库进行数据操作。
3. 编写管理员批假和查看请假信息的功能,并使用 JDBC 连接数据库进行数据操作。
4. 设计界面并实现与 Java 代码的交互。
下面我将会详细讲解每一个步骤。
## 步骤一:设计数据库结构
首先,我们需要设计数据库结构。这个请假系统需要保存学生和管理员的信息以及请假记录。因此,我们需要创建三个表格:`students`,`administrators`和`leave_records`。
`students` 表格包含以下字段:
- `id`:学生编号,主键;
- `name`:学生姓名;
- `password`:学生密码;
- `class`:学生班级;
- `phone`:学生电话号码。
`administrators` 表格包含以下字段:
- `id`:管理员编号,主键;
- `name`:管理员姓名;
- `password`:管理员密码;
- `phone`:管理员电话号码。
`leave_records` 表格包含以下字段:
- `id`:请假记录编号,主键;
- `student_id`:学生编号,外键,关联 `students` 表格的 `id` 字段;
- `start_time`:请假开始时间;
- `end_time`:请假结束时间;
- `leave_reason`:请假原因;
- `status`:请假状态,0 表示未处理,1 表示已批准,2 表示已拒绝;
- `administrator_id`:管理员编号,外键,关联 `administrators` 表格的 `id` 字段。
下面是创建表格的 SQL 代码:
```sql
CREATE TABLE students (
id INT PRIMARY KEY,
name VARCHAR(20) NOT NULL,
password VARCHAR(20) NOT NULL,
class VARCHAR(20) NOT NULL,
phone VARCHAR(20) NOT NULL
);
CREATE TABLE administrators (
id INT PRIMARY KEY,
name VARCHAR(20) NOT NULL,
password VARCHAR(20) NOT NULL,
phone VARCHAR(20) NOT NULL
);
CREATE TABLE leave_records (
id INT PRIMARY KEY,
student_id INT NOT NULL,
start_time TIMESTAMP NOT NULL,
end_time TIMESTAMP NOT NULL,
leave_reason VARCHAR(100) NOT NULL,
status INT NOT NULL,
administrator_id INT NOT NULL,
FOREIGN KEY (student_id) REFERENCES students(id),
FOREIGN KEY (administrator_id) REFERENCES administrators(id)
);
```
## 步骤二:编写 Java 代码
接下来,我们需要编写 Java 代码,实现学生请假、销假和查看信息的功能,并使用 JDBC 连接数据库进行数据操作。
### 编写学生请假功能
首先,我们编写一个 `LeaveService` 类,其中包含一个 `applyLeave` 方法,用于学生提交请假申请。该方法的实现如下:
```java
public class LeaveService {
private Connection connection;
public LeaveService(Connection connection) {
this.connection = connection;
}
public void applyLeave(int studentId, Timestamp startTime, Timestamp endTime, String leaveReason) throws SQLException {
String sql = "INSERT INTO leave_records (student_id, start_time, end_time, leave_reason, status, administrator_id) VALUES (?, ?, ?, ?, ?, ?)";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setInt(1, studentId);
statement.setTimestamp(2, startTime);
statement.setTimestamp(3, endTime);
statement.setString(4, leaveReason);
statement.setInt(5, 0);
statement.setInt(6, 0);
statement.executeUpdate();
}
}
```
在该方法中,我们使用 `PreparedStatement` 预编译 SQL 语句,然后将参数设置到 SQL 语句中。最后,执行 SQL 语句,将请假申请插入到 `leave_records` 表格中。
### 编写学生销假功能
接下来,我们编写一个 `CancelLeaveService` 类,其中包含一个 `cancelLeave` 方法,用于学生提交销假申请。该方法的实现如下:
```java
public class CancelLeaveService {
private Connection connection;
public CancelLeaveService(Connection connection) {
this.connection = connection;
}
public void cancelLeave(int studentId, int leaveRecordId) throws SQLException {
String sql = "UPDATE leave_records SET status = 3 WHERE id = ? AND student_id = ?";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setInt(1, leaveRecordId);
statement.setInt(2, studentId);
statement.executeUpdate();
}
}
```
在该方法中,我们使用 `PreparedStatement` 预编译 SQL 语句,然后将参数设置到 SQL 语句中。最后,执行 SQL 语句,将请假记录的状态修改为 3,表示已销假。
### 编写学生查看信息功能
接下来,我们编写一个 `ViewLeaveService` 类,其中包含一个 `viewLeave` 方法,用于学生查看自己的请假信息。该方法的实现如下:
```java
public class ViewLeaveService {
private Connection connection;
public ViewLeaveService(Connection connection) {
this.connection = connection;
}
public List<LeaveRecord> viewLeave(int studentId) throws SQLException {
String sql = "SELECT * FROM leave_records WHERE student_id = ?";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setInt(1, studentId);
ResultSet resultSet = statement.executeQuery();
List<LeaveRecord> leaveRecords = new ArrayList<>();
while (resultSet.next()) {
LeaveRecord leaveRecord = new LeaveRecord(
resultSet.getInt("id"),
resultSet.getInt("student_id"),
resultSet.getTimestamp("start_time"),
resultSet.getTimestamp("end_time"),
resultSet.getString("leave_reason"),
resultSet.getInt("status"),
resultSet.getInt("administrator_id")
);
leaveRecords.add(leaveRecord);
}
return leaveRecords;
}
}
```
在该方法中,我们使用 `PreparedStatement` 预编译 SQL 语句,然后将参数设置到 SQL 语句中。执行 SQL 语句后,将查询结果封装成 `LeaveRecord` 对象,并添加到 `leaveRecords` 列表中。最后,返回 `leaveRecords` 列表。
### 使用 JDBC 连接数据库
为了使用 JDBC 连接数据库,我们需要编写一个 `DbHelper` 类,用于连接数据库。该类的实现如下:
```java
public class DbHelper {
private static final String URL = "jdbc:mysql://localhost:3306/leave_system";
private static final String USER = "root";
private static final String PASSWORD = "123456";
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(URL, USER, PASSWORD);
}
}
```
在该类中,我们使用 `DriverManager` 类提供的 `getConnection` 方法连接数据库,并将连接对象返回。
## 步骤三:编写管理员批假和查看请假信息的功能
接下来,我们需要编写管理员批假和查看请假信息的功能,并使用 JDBC 连接数据库进行数据操作。
### 编写管理员批假功能
首先,我们编写一个 `ApproveLeaveService` 类,其中包含一个 `approveLeave` 方法,用于管理员批准请假申请。该方法的实现如下:
```java
public class ApproveLeaveService {
private Connection connection;
public ApproveLeaveService(Connection connection) {
this.connection = connection;
}
public void approveLeave(int leaveRecordId, int administratorId) throws SQLException {
String sql = "UPDATE leave_records SET status = 1, administrator_id = ? WHERE id = ?";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setInt(1, administratorId);
statement.setInt(2, leaveRecordId);
statement.executeUpdate();
}
}
```
在该方法中,我们使用 `PreparedStatement` 预编译 SQL 语句,然后将参数设置到 SQL 语句中。最后,执行 SQL 语句,将请假记录的状态修改为 1,表示已批准,并将管理员编号设置为批准该请假申请的管理员编号。
### 编写管理员查看请假信息功能
接下来,我们编写一个 `ViewLeaveRequestService` 类,其中包含一个 `viewLeaveRequest` 方法,用于管理员查看请假信息。该方法的实现如下:
```java
public class ViewLeaveRequestService {
private Connection connection;
public ViewLeaveRequestService(Connection connection) {
this.connection = connection;
}
public List<LeaveRecord> viewLeaveRequest() throws SQLException {
String sql = "SELECT * FROM leave_records WHERE status = 0";
PreparedStatement statement = connection.prepareStatement(sql);
ResultSet resultSet = statement.executeQuery();
List<LeaveRecord> leaveRecords = new ArrayList<>();
while (resultSet.next()) {
LeaveRecord leaveRecord = new LeaveRecord(
resultSet.getInt("id"),
resultSet.getInt("student_id"),
resultSet.getTimestamp("start_time"),
resultSet.getTimestamp("end_time"),
resultSet.getString("leave_reason"),
resultSet.getInt("status"),
resultSet.getInt("administrator_id")
);
leaveRecords.add(leaveRecord);
}
return leaveRecords;
}
}
```
在该方法中,我们使用 `PreparedStatement` 预编译 SQL 语句,然后执行 SQL 语句。将查询结果封装成 `LeaveRecord` 对象,并添加到 `leaveRecords` 列表中。最后,返回 `leaveRecords` 列表。
## 步骤四:设计界面并实现与 Java 代码的交互
最后,我们需要设计界面并实现与 Java 代码的交互。在这里,我使用了 JSP 技术来实现界面和 Java 代码的交互。具体实现方式如下:
1. 在 `webapp` 目录下创建以下文件夹和文件:
```
- WEB-INF
- classes
- LeaveRecord.class
- LeaveService.class
- CancelLeaveService.class
- ViewLeaveService.class
- ApproveLeaveService.class
- ViewLeaveRequestService.class
- DbHelper.class
- lib
- mysql-connector-java-8.0.26.jar
- web.xml
- index.jsp
- login.jsp
- student.jsp
- administrator.jsp
- apply_leave.jsp
- cancel_leave.jsp
- view_leave.jsp
- approve_leave.jsp
- view_leave_request.jsp
```
其中,`web.xml` 文件用于配置 Servlet 和 JSP。
2. 实现登录功能
在 `login.jsp` 文件中,我们使用表单来实现登录功能。用户输入用户名和密码后,提交表单到 `LoginServlet`,由该 Servlet 处理登录请求。如果用户名和密码正确,则跳转到对应的用户界面;否则,回到登录页面,显示错误信息。
3. 实现学生请假功能
在 `student.jsp` 文件中,我们添加一个按钮,用于跳转到请假申请页面。在 `apply_leave.jsp` 页面中,我们使用表单来实现请假申请功能。学生输入请假开始时间、结束时间和原因后,提交表单到 `ApplyLeaveServlet`,由该 Servlet 处理请假申请。如果请假申请提交成功,则跳转到学生界面;否则,回到请假申请页面,显示错误信息。
4. 实现学生销假功能
在 `student.jsp` 文件中,我们添加一个按钮,用于跳转到销假申请页面。在 `cancel_leave.jsp` 页面中,我们使用表单来实现销假申请功能。学生输入请假记录编号后,提交表单到 `CancelLeaveServlet`,由该 Servlet 处理销假申请。如果销假申请提交成功,则跳转到学生界面;否则,回到销假申请页面,显示错误信息。
5. 实现学生查看信息功能
在 `student.jsp` 文件中,我们添加一个按钮,用于跳转到查看请假信息页面。在 `view_leave.jsp` 页面中,我们使用表格来显示学生的请假信息。当学生访问该页面时,通过 `ViewLeaveServlet`,由该 Servlet 处理查询请求,并将结果显示在表格中。
6. 实现管理员批假功能
在 `administrator.jsp` 文件中,我们添加一个按钮,用于跳转到批准请假申请页面。在 `approve_leave.jsp` 页面中,我们使用表格来显示需要批准的请假申请。当管理员访问该页面时,通过 `ViewLeaveRequestServlet`,由该 Servlet 处理查询请求,并将结果显示在表格中。管理员可以选择要批准的请假申请,然后提交表格到 `ApproveLeaveServlet`,由该 Servlet 处理批准请求。如果批准请求提交成功,则回到批准请假申请页面;否则,显示错误信息。
7. 实现管理员查看请假信息功能
在 `administrator.jsp` 文件中,我们添加一个按钮,用于跳转到查看请假信息页面。在 `view_leave.jsp` 页面中,我们使用表格来显示所有的请假信息。当管理员访问该页面时,通过 `ViewLeaveServlet`,由该 Servlet 处理查询请求,并将结果显示在表格中。
最终,我们就实现了一个简单的学生请假系统,并使用 JDBC 连接数据库,使用 Java、JSP、Web 技术实现界面和 Java 代码的交互。