当前位置:首页 > 技术 > 正文内容

JSP与Servlet驱动的医院信息管理系统实现

访客 技术 2026年9月17日 9

系统概述

基于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驱动建立连接。

系统界面 功能展示 管理面板

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。