JSP与Servlet驱动的医院信息管理系统实现
系统概述
基于Java Web技术栈构建的医院信息管理系统,采用JSP页面展示与Servlet业务逻辑处理相结合的方式。系统整合了JDBC数据库连接、MySQL数据存储以及HTML前端界面,实现了完整的医院业务管理功能。
技术环境要求
- Java版本:不低于8.0
- MySQL数据库:不低于5.7版本
- 应用服务器:Tomcat 8及以上
- 开发工具:Eclipse、IntelliJ IDEA或其他兼容IDE
核心功能模块
系统提供多层次用户访问控制,包括普通用户与管理员角色。主要功能涵盖:
- 用户账户管理(注册、登录、权限验证)
- 科室信息维护(增删改查)
- 病房资源配置管理
- 患者档案管理
- 医疗人员分类管理
- 手术流程跟踪管理
关键代码实现
以下是患者信息处理的核心代码片段:
public class PatientManagementServlet extends HttpServlet {
protected void processAddPatient(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
String patientId = req.getParameter("patientId");
String patientName = req.getParameter("patientName");
String gender = req.getParameter("gender");
int age = Integer.parseInt(req.getParameter("age"));
String roomNumber = req.getParameter("roomNumber");
int result = new PatientService().addPatientRecord(patientId, patientName, gender, age, roomNumber);
String message;
PrintWriter writer = resp.getWriter();
if (result == 1) {
message = "患者 " + patientName + " 信息录入成功!";
} else {
message = "错误:患者信息录入失败!";
}
writer.write("<div class='notification'>");
writer.write("<div>" + message + "</div>");
writer.write("</div>");
writer.flush();
writer.close();
}
protected void processDeletePatient(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
String patientId = req.getParameter("patientId");
int result = new PatientService().removePatient(patientId);
String message;
PrintWriter writer = resp.getWriter();
if (result == 1) {
message = "成功移除患者ID为 " + patientId + " 的记录!";
} else {
message = "错误:患者删除操作失败!";
}
writer.write("<div class='notification'>");
writer.write("<div>" + message + "</div>");
writer.write("</div>");
writer.flush();
writer.close();
}
}
手术记录管理模块代码示例:
public class SurgeryManagementServlet extends HttpServlet {
// 删除手术记录
protected void processSurgeryRemoval(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
String patientId = req.getParameter("patientId");
String doctorId = req.getParameter("doctorId");
int operationResult = new SurgeryService().removeSurgeryRecord(patientId, doctorId);
String statusMessage;
PrintWriter output = resp.getWriter();
if (operationResult == 1) {
statusMessage = "成功删除患者 " + patientId + " 的医生 " + doctorId + " 手术信息!";
} else {
statusMessage = "错误:手术记录删除失败!";
}
output.write("<div class='notification'>");
output.write("<div>" + statusMessage + "</div>");
output.write("</div>");
output.flush();
output.close();
}
// 更新手术记录
protected void processSurgeryUpdate(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
String patientId = req.getParameter("patientId");
String surgeryId = req.getParameter("surgeryId");
String updatedTime = req.getParameter("updatedTime");
int updateStatus = new SurgeryService().modifySurgeryRecord(patientId, surgeryId, updatedTime);
String notification;
PrintWriter writer = resp.getWriter();
if (updateStatus == 1) {
notification = "患者 " + patientId + " 手术ID " + surgeryId + " 记录更新成功!";
} else {
notification = "错误:手术记录更新失败!";
}
writer.write("<div class='notification'>");
writer.write("<div>" + notification + "</div>");
writer.write("</div>");
writer.flush();
writer.close();
}
}
病房资源管理相关代码:
protected void processRoomUpdate(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
String roomId = req.getParameter("roomId");
String newRoomId = req.getParameter("newRoomId");
String roomName = req.getParameter("roomName");
String departmentName = req.getParameter("departmentName");
String departmentId = req.getParameter("departmentId");
int result = new RoomService().updateRoomInfo(roomId, newRoomId, roomName, departmentName, departmentId);
String message;
PrintWriter output = resp.getWriter();
if (result == 1) {
message = "病房 " + roomId + " 信息更新成功!";
} else {
message = "错误:病房信息更新失败!";
}
output.write("<div class='notification'>");
output.write("<div>" + message + "</div>");
output.write("</div>");
output.flush();
output.close();
}
// 查询全部患者信息
protected void fetchAllPatients(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
ArrayList<PatientEntity> patientList = new PatientService().fetchAllPatients();
PrintWriter output = resp.getWriter();
if (patientList != null) {
output.write("<div class='patient-list'>");
output.write("<div><span>患者编号</span><span>姓名</span><span>性别</span><span>年龄</span><span>所在病房</span></div>");
for (PatientEntity patient : patientList) {
output.write("<div>");
output.write("<span>" + patient.getId() + "</span>");
output.write("<span>" + patient.getName() + "</span>");
output.write("<span>" + patient.getGender() + "</span>");
output.write("<span>" + patient.getAge() + "</span>");
output.write("<span>" + patient.getRoomName() + "</span>");
output.write("</div>");
}
output.write("</div>");
}
output.flush();
output.close();
}
身份验证与权限控制代码:
public class AuthenticationServlet extends HttpServlet {
protected void handleLoginRequest(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
String userName = req.getParameter("username");
String passWord = req.getParameter("password");
String accessLevel = null;
UserService userService = new UserService();
UserAccount account = userService.authenticateUser(userName, passWord);
if (account != null) {
accessLevel = account.getAccessLevel();
if (accessLevel.equals("普通用户")) {
req.getSession().setAttribute("currentUser", account);
req.getRequestDispatcher("patient_portal.jsp").forward(req, resp);
} else {
req.getSession().setAttribute("administrator", account);
req.getRequestDispatcher("admin_dashboard.jsp").forward(req, resp);
}
} else {
req.setAttribute("errorMessage", "错误:用户名或密码不正确!");
req.getRequestDispatcher("error_page.jsp").forward(req, resp);
}
}
}
系统架构特点
该医院管理系统采用了分层架构设计,通过DAO模式实现数据访问与业务逻辑分离。前端使用JSP技术动态生成HTML内容,后端通过Servlet处理HTTP请求并返回响应。数据库采用MySQL进行持久化存储,通过JDBC驱动建立连接。