随笔- 118  文章- 1  评论- 0  阅读- 414 

今天继续2019年错题本系统的练习,昨天已经完成了除增删改查和页面设计的其他部分。
1.新增请假申请
Servlet(AddLeaveServlet)
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Properties;

@WebServlet("/addLeave")
public class AddLeaveServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 读取数据库连接配置
Properties properties = new Properties();
try {
properties.load(getServletContext().getResourceAsStream("/WEB-INF/db.properties"));
String url = properties.getProperty("db.url");
String username = properties.getProperty("db.username");
String password = properties.getProperty("db.password");

        // 1. 建立数据库连接
        Connection connection = DriverManager.getConnection(url, username, password);

        // 2. 从请求中获取请假申请信息
        String studentId = request.getParameter("student_id");
        String studentName = request.getParameter("student_name");
        String gender = request.getParameter("gender");
        String grade = request.getParameter("grade");
        String college = request.getParameter("college");
        String major = request.getParameter("major");
        String className = request.getParameter("class_name");
        String leaveReason = request.getParameter("leave_reason");
        String leaveDateStr = request.getParameter("leave_date");
        java.sql.Date leaveDate = java.sql.Date.valueOf(leaveDateStr);

        // 3. 编写 SQL 插入语句
        String sql = "INSERT INTO leave_application_info (student_id, student_name, gender, grade, college, major, class_name, leave_reason, leave_date) VALUES (?,?,?,?,?,?,?,?,?)";
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        preparedStatement.setString(1, studentId);
        preparedStatement.setString(2, studentName);
        preparedStatement.setString(3, gender);
        preparedStatement.setString(4, grade);
        preparedStatement.setString(5, college);
        preparedStatement.setString(6, major);
        preparedStatement.setString(7, className);
        preparedStatement.setString(8, leaveReason);
        preparedStatement.setDate(9, leaveDate);

        // 4. 执行插入操作
        int rowsAffected = preparedStatement.executeUpdate();
        if (rowsAffected > 0) {
            request.setAttribute("message", "请假申请新增成功");
        } else {
            request.setAttribute("message", "请假申请新增失败");
        }

        // 5. 关闭资源
        preparedStatement.close();
        connection.close();

        // 转发到结果页面展示消息
        request.getRequestDispatcher("/result.jsp").forward(request, response);
    } catch (SQLException | java.io.IOException e) {
        e.printStackTrace();
        request.setAttribute("message", "系统出现异常,请稍后再试");
        request.getRequestDispatcher("/result.jsp").forward(request, response);
    }
}

2.修改请假申请 Servlet(UpdateLeaveServlet):
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Properties;

@WebServlet("/updateLeave")
public class UpdateLeaveServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Properties properties = new Properties();
try {
properties.load(getServletContext().getResourceAsStream("/WEB-INF/db.properties"));
String url = properties.getProperty("db.url");
String username = properties.getProperty("db.username");
String password = properties.getProperty("db.password");

        Connection connection = DriverManager.getConnection(url, username, password);

        int id = Integer.parseInt(request.getParameter("id"));
        String leaveReason = request.getParameter("leave_reason");
        String leaveDateStr = request.getParameter("leave_date");
        java.sql.Date leaveDate = java.sql.Date.valueOf(leaveDateStr);

        String sql = "UPDATE leave_application_info SET leave_reason =?, leave_date =? WHERE id =?";
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        preparedStatement.setString(1, leaveReason);
        preparedStatement.setDate(2, leaveDate);
        preparedStatement.setInt(3, id);

        int rowsAffected = preparedStatement.executeUpdate();
        if (rowsAffected > 0) {
            request.setAttribute("message", "请假申请修改成功");
        } else {
            request.setAttribute("message", "请假申请修改失败");
        }

        preparedStatement.close();
        connection.close();

        request.getRequestDispatcher("/result.jsp").forward(request, response);
    } catch (SQLException | java.io.IOException e) {
        e.printStackTrace();
        request.setAttribute("message", "系统出现异常,请稍后再试");
        request.getRequestDispatcher("/result.jsp").forward(request, response);
    }
}

}
3.删除请假申请
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Properties;

@WebServlet("/deleteLeave")
public class DeleteLeaveServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Properties properties = new Properties();
try {
properties.load(getServletContext().getResourceAsStream("/WEB-INF/db.properties"));
String url = properties.getProperty("db.url");
String username = properties.getProperty("db.username");
String password = properties.getProperty("db.password");

        Connection connection = DriverManager.getConnection(url, username, password);

        int id = Integer.parseInt(request.getParameter("id"));

        String sql = "DELETE FROM leave_application_info WHERE id =?";
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        preparedStatement.setInt(1, id);

        int rowsAffected = preparedStatement.executeUpdate();
        if (rowsAffected > 0) {
            request.setAttribute("message", "请假申请删除成功");
        } else {
            request.setAttribute("message", "请假申请删除失败");
        }

        preparedStatement.close();
        connection.close();

        request.getRequestDispatcher("/result.jsp").forward(request, response);
    } catch (SQLException | java.io.IOException e) {
        e.printStackTrace();
        request.setAttribute("message", "系统出现异常,请稍后再试");
        request.getRequestDispatcher("/result.jsp").forward(request, response);
    }
}

}
4.查询请假申请
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;

@WebServlet("/queryLeave")
public class QueryLeaveServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Properties properties = new Properties();
try {
properties.load(getServletContext().getResourceAsStream("/WEB-INF/db.properties"));
String url = properties.getProperty("db.url");
String username = properties.getProperty("db.username");
String password = properties.getProperty("db.password");

        Connection connection = DriverManager.getConnection(url, username, password);

        String keyword = request.getParameter("keyword");
        String sql = "SELECT student_name, college, major, class_name, leave_date, leave_reason FROM leave_application_info WHERE student_id LIKE? OR leave_reason LIKE? OR leave_date LIKE?";
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        preparedStatement.setString(1, "%" + keyword + "%");
        preparedStatement.setString(2, "%" + keyword + "%");
        preparedStatement.setString(3, "%" + keyword + "%");

        ResultSet resultSet = preparedStatement.executeQuery();
        List<LeaveApplication> resultList = new ArrayList<>();
        while (resultSet.next()) {
            LeaveApplication application = new LeaveApplication();
            application.setStudentName(resultSet.getString("student_name"));
            application.setCollege(resultSet.getString("college"));
            application.setMajor(resultSet.getString("major"));
            application.setClassName(resultSet.getString("class_name"));
            application.setLeaveDate(resultSet.getDate("leave_date"));
            application.setLeaveReason(resultSet.getString("leave_reason"));
            resultList.add(application);
        }

        request.setAttribute("resultList", resultList);
        resultSet.close();
        preparedStatement.close();
        connection.close();

        request.getRequestDispatcher("/query_result.jsp").forward(request, response);
    } catch (SQLException | java.io.IOException e) {
        e.printStackTrace();
        request.setAttribute("message", "系统出现异常,请稍后再试");
        request.getRequestDispatcher("/result.jsp").forward(request, response);
    }
}

}
之后就是页面的设计
主页面

石家庄铁道大学请假条管理系统

石家庄铁道大学请假条管理系统

新增请假页面 新增请假申请

新增请假申请










修改申请页面 修改请假申请

修改请假申请

<%-- 这里需要先从数据库获取要修改的记录信息填充到表单中,以下是简单示意,实际需要结合 Servlet 等处理 --%>


完成后用tomcat在浏览器访问即可
 posted on   敝屣  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
点击右上角即可分享
微信分享提示