恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

JavaWeb原生开发实战:JSP+Servlet人事系统部署与调试指南

  • 首页
  • 资讯中心
  • /
  • JavaWeb原生开发实战:JSP+Servlet人事系统部署与调试指南

相关资讯

C语言NIDS实战:从PCAP解析到告警的完整实现 2026/9/28 11:57:21
OpenCV人脸识别实战:Haar级联与LBPH模型训练完整指南 2026/9/28 11:52:21
VIM命令备忘:用 TaoToken 统一 Key 管理 set fileencoding 与光标定位配置 2026/9/28 11:52:21

最新资讯

Python+STK11多智能体强化学习卫星调度实验全指南
职场核心能力清单:结构化思考、时间管理与向上管理实战指南
J1939诊断报文实战:DM1、DM2、DM3解析与故障排查指南
机箱前置USB接口易损原因与Type-E改造方案
开放世界目标检测新范式:OW-DETR的Pytorch实战与部署
SSM+MySQL知识产权管理系统实战部署与优化指南

今日推荐

婚恋网站实战案例:避开3个高价坑,省钱50%还能跑赢流量
制作网页比较方便的软件怎么选?一文搞懂避坑指南
BootCamp6.1.7071驱动包手动安装与回滚全攻略

本周热门

从像素到笔画:srt-whiteboard-animation骨架笔迹追踪实现(Zhang-Suen细化+8邻接追踪)
网站建设的英语怎么说?别只背单词,看完这套安全完整流程才敢上线
新手入门看这篇:建设网站加盟避坑指南与SEO实操

本月精选

自研推理加速器Redwood:两周内实现PyTorch模型高效部署的实战教程
V4L2摄像头采集实战:从camera_client.rar到出图全流程解析
从“谁发明了钢琴键”到知识问答智能体:RAG与记忆工程实践

JavaWeb原生开发实战:JSP+Servlet人事系统部署与调试指南

发布时间:2026/9/28 11:57:21
JavaWeb原生开发实战:JSP+Servlet人事系统部署与调试指南 简介这是一套基于JSPServletTomcatMySQL实现的完整人事管理系统源码面向计算机、数学、电子信息等专业的本科生及初学者适用于课程设计、期末大作业与毕业设计参考。系统涵盖员工信息管理、部门维护、考勤统计、权限控制等核心模块采用经典B/S架构与MVC分层思想便于理解Web开发全流程与数据库交互逻辑。压缩包共2000个文件主体为49个Java后端类、42个JSP页面、1294个JS脚本及404个CSS样式文件辅以SQL建表语句、配置文件与说明文档整体73.74MB结构清晰、注释较全适合作为Java Web入门到进阶的实践范例。目前已有205人学习下载资源提供开箱即用的可运行环境含adminLTE前端框架并附带详细部署说明与常见问题提示有助于快速掌握项目搭建、代码调试与功能扩展方法。1. 这不是“老古董”而是能跑通、能调试、能交差的 JavaWeb 实战基线一个完整人事管理系统源码包为什么值得你花 20 分钟解压、配环境、跑起来你可能刚在头歌实训里卡在HttpServlet的doGet和doPost区分上也可能正被毕设选题折磨——导师说“别用 Spring Boot得体现 Servlet 基础”而你搜到的所谓“JSP 项目”点开全是空文件夹或报错 404。这个基于jspservlettomcatmysql的人事管理系统源码.zip不是教学幻灯片也不是阉割版 demo它是一套真实可运行、结构清晰、有登录鉴权、有增删改查、有前端 AdminLTE 界面、有 MySQL 表结构脚本、有 Tomcat 部署路径约定的完整工程。它解决的不是“怎么写 HelloWorld.jsp”而是“如何把用户登录、部门管理、员工档案录入、离职状态更新、权限跳转这些业务逻辑用原生 JSPServlet 串成一条不崩的链路”。适合计算机/软工专业大三学生做课程设计也适合想补全 JavaWeb 底层链路从请求进 Filter 到 Servlet 处理再到 JSP 渲染的转岗者。它不炫技但每一步都踩在 JavaWeb 开发的真实断点上比如web.xml里 servlet-mapping 的/emp/*路径匹配规则、context.xml中 JNDI 数据源配置、WEB-INF/web.xml与META-INF/MANIFEST.MF的协同作用——这些不是考点是部署时真正会卡住你的地方。2. 从解压到首页渲染五步走通整个部署链路每一步都对应一个真实环境变量2.1 解压后先看目录结构识别核心模块与“非装饰性”文件解压后你会看到类似这样的层级实际以 ZIP 内容为准但典型结构如下hrms/ ├── src/ # Java 源码根目录 │ ├── main/ │ │ ├── java/ # Servlet 类、DAO、Service 层 │ │ │ └── com/hrms/ # 包名前缀含 LoginServlet.java, EmpServlet.java 等 │ │ └── resources/ # db.properties 或 jdbc.properties关键 │ └── webapp/ # Web 资源根目录等同于传统 WebContent │ ├── WEB-INF/ │ │ ├── web.xml # 核心配置servlet 定义、filter、welcome-file-list │ │ └── lib/ # jar 包mysql-connector-java-x.x.jar 必须存在 │ ├── static/ # CSS/JS 静态资源注意adminlte.css 在此目录下 │ └── jsp/ # 所有 .jsp 页面login.jsp, index.jsp, emp_list.jsp 等 ├── sql/ # 数据库脚本hrms.sql 或 init.sql建库建表初始数据 └── README.md # 如有说明数据库用户名密码、默认账号提示adminlte.css等文件出现在static/下而非WEB-INF/是因为WEB-INF是受保护目录外部无法直接访问。所有 CSS/JS 必须放在webapp/static/或webapp/根下才能被浏览器加载。这是新手第一次启动页面空白的最常见原因。2.2 数据库初始化执行 SQL 脚本前必须确认三件事不要直接双击.sql文件用 Navicat 执行——很多脚本依赖CREATE DATABASE IF NOT EXISTS hrms CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;这类语句而 Navicat 默认不启用“执行多条语句”选项。正确做法命令行优先避免 GUI 陷阱# 1. 登录 MySQL假设 root 密码为 123456 mysql -u root -p123456 # 2. 手动创建数据库确保字符集 CREATE DATABASE hrms CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; # 3. 退出后执行脚本关键-e 参数让 mysql 客户端执行完即退出 mysql -u root -p123456 hrms /path/to/hrms/sql/hrms.sql参数说明utf8mb4支持 emoji 和四字节 UTF-8 字符避免中文乱码尤其姓名字段含生僻字时-e避免交互式等待适合自动化部署hrms.sql中应包含USE hrms;和完整的CREATE TABLE语句若无USE需在脚本开头手动加。2.3 Tomcat 配置context.xml与web.xml的双重绑定该系统大概率使用 JNDI 数据源比硬编码 URL 更安全因此src/main/webapp/META-INF/context.xml是必查文件!-- META-INF/context.xml -- ?xml version1.0 encodingUTF-8? Context Resource namejdbc/hrms authContainer typejavax.sql.DataSource factoryorg.apache.tomcat.jdbc.pool.DataSourceFactory driverClassNamecom.mysql.cj.jdbc.Driver urljdbc:mysql://localhost:3306/hrms?useUnicodetrueamp;characterEncodingutf8amp;serverTimezoneAsia/Shanghai usernameroot password123456 maxActive20 minIdle5 maxWait10000/ /Context关键点解析namejdbc/hrmsJNDI 名称必须与web.xml中resource-ref的res-ref-name一致url中serverTimezoneAsia/ShanghaiMySQL 8.0 强制要求否则报The server time zone value ... is unrecognizedamp;XML 中必须转义写成amp;否则 Tomcat 启动失败。同时检查WEB-INF/web.xml是否声明了该资源!-- WEB-INF/web.xml -- resource-ref descriptionHRMS Database Connection/description res-ref-namejdbc/hrms/res-ref-name res-typejavax.sql.DataSource/res-type res-authContainer/res-auth /resource-ref2.4 IDE 配置IntelliJ IDEA 中让 JSP 正确编译的三个隐藏开关即使你已配置好 Tomcat ServerJSP 仍可能报java.lang.ClassNotFoundException: org.apache.jsp.index_jsp——这不是类路径问题而是 IDEA 未启用 JSP 编译器。必须操作File → Project Structure → Modules → [你的模块] → Sources确认src/main/webapp已标记为Web Resources RootFile → Settings → Build → Compiler → Java Compiler勾选Use compiler: javac in-process避免 JDK 版本冲突File → Settings → Build → Compiler → Compiler → Java Compiler设置Target bytecode version 8JSP 编译依赖 Java 8 兼容性最关键一步File → Settings → Build → Compiler → Annotation Processors→ 勾选Enable annotation processing并设置Processor path为tomcat/lib/jasper.jar路径需指向你本地 Tomcat 的lib目录。血泪经验很多教程漏掉第 4 步导致 JSP 页面始终 500 错误日志只显示org.apache.jasper.JasperException: Unable to compile class for JSP根本原因就是jasper.jar未参与编译过程。2.5 启动验证用 curl 命令绕过浏览器直击 Tomcat 响应头不要一上来就打开http://localhost:8080/hrms/login.jsp——先用命令行确认服务是否真正响应# 发送 GET 请求只看 HTTP 状态码和 Content-Type curl -I http://localhost:8080/hrms/login.jsp # 预期返回关键看 200 OK 和 text/html HTTP/1.1 200 OK Content-Type: text/html;charsetUTF-8 Content-Length: 2345 Date: Mon, 15 Apr 2024 08:22:17 GMT如果返回HTTP/1.1 404 Not Found检查 WAR 包是否部署成功$TOMCAT_HOME/webapps/下是否有hrms/目录检查web.xml中welcome-file-list是否包含login.jsp检查login.jsp是否真在webapp/jsp/下而非webapp/根目录。如果返回HTTP/1.1 500 Internal Server Error查catalina.out日志末尾定位Caused by:行最常见是ClassNotFoundException: com.mysql.cj.jdbc.Driverjar 包没放对位置或SQLException: Access denied for user rootlocalhost数据库密码错误。3. Servlet 生命周期与请求流转从 login.jsp 提交到 LoginServlet 的七层调用链3.1 表单提交路径action属性如何触发正确的 Servlet 映射login.jsp中的表单通常长这样form actionlogin methodpost input typetext nameusername / input typepassword namepassword / button typesubmit登录/button /form注意actionlogin是相对路径它会被浏览器解析为http://localhost:8080/hrms/login。而web.xml中必须有对应映射servlet servlet-nameLoginServlet/servlet-name servlet-classcom.hrms.servlet.LoginServlet/servlet-class /servlet servlet-mapping servlet-nameLoginServlet/servlet-name url-pattern/login/url-pattern !-- 关键必须与 action 值完全一致 -- /servlet-mapping玄学细节/login是精确匹配/login/*是路径前缀匹配*.do是扩展名匹配。本项目用前者意味着只有POST /login才会进入LoginServletGET /login会 405 错误除非doGet()也实现。3.2 LoginServlet 的标准处理流程request.getParameter() 到 request.getRequestDispatcher() 的闭环典型LoginServlet.java代码片段public class LoginServlet extends HttpServlet { Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 1. 获取表单参数注意name 属性值必须与 getParameter() 一致 String username request.getParameter(username); // 来自 input nameusername String password request.getParameter(password); // 2. 调用 Service 层验证此处简化为硬编码校验 if (admin.equals(username) 123456.equals(password)) { // 3. 设置 session 属性登录态 request.getSession().setAttribute(user, username); // 4. 转发到主页注意/index.jsp 是相对于 webapp 的路径 request.getRequestDispatcher(/jsp/index.jsp).forward(request, response); } else { // 5. 转发回登录页并带错误信息 request.setAttribute(error, 用户名或密码错误); request.getRequestDispatcher(/jsp/login.jsp).forward(request, response); } } }参数说明request.getRequestDispatcher()服务器端内部跳转URL 地址栏不变request对象可传递属性response.sendRedirect()客户端重定向URL 变化request属性丢失本项目登录成功后用forward避免刷新重复提交request.getSession().setAttribute()将用户信息存入 Session后续所有 Servlet 可通过request.getSession().getAttribute(user)获取。3.3 Filter 拦截器如何实现未登录用户访问员工列表自动跳转web.xml中定义的LoginFilter是权限控制核心filter filter-nameLoginFilter/filter-name filter-classcom.hrms.filter.LoginFilter/filter-class /filter filter-mapping filter-nameLoginFilter/filter-name url-pattern/jsp/emp_list.jsp/url-pattern !-- 拦截具体 JSP 页面 -- url-pattern/servlet/EmpServlet/url-pattern !-- 拦截 Servlet -- /filter-mappingLoginFilter.java关键逻辑public class LoginFilter implements Filter { Override public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { HttpServletRequest request (HttpServletRequest) req; HttpServletResponse response (HttpServletResponse) resp; // 1. 检查 session 中是否存在 user 属性 Object user request.getSession().getAttribute(user); if (user null) { // 2. 未登录重定向到登录页注意sendRedirect 用绝对路径 response.sendRedirect(request.getContextPath() /jsp/login.jsp); return; // 阻断后续执行 } // 3. 已登录放行 chain.doFilter(req, resp); } }注意request.getContextPath()返回应用上下文路径如/hrms确保重定向地址为http://localhost:8080/hrms/jsp/login.jsp而非硬编码/jsp/login.jsp否则部署到 ROOT 上下文会失效。3.4 EmpServlet 的 CRUD 实现URL 路径设计决定功能分支EmpServlet通常通过?actionadd或/emp/delete?id123区分操作类型protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String action request.getParameter(action); switch (action) { case list: showEmpList(request, response); // 查询全部员工 break; case toAdd: request.getRequestDispatcher(/jsp/emp_add.jsp).forward(request, response); break; case delete: deleteEmp(request, response); // 删除 break; default: response.sendError(HttpServletResponse.SC_BAD_REQUEST); } } private void deleteEmp(HttpServletRequest request, HttpServletResponse response) throws IOException { String idStr request.getParameter(id); int id Integer.parseInt(idStr); // 注意生产环境需 try-catch EmpService.delete(id); // 调用 DAO 执行 DELETE FROM emp WHERE id? response.sendRedirect(request.getContextPath() /servlet/EmpServlet?actionlist); }边界坑Integer.parseInt()在id为空或非数字时抛NumberFormatException必须包裹 try-catch 并返回友好提示否则 500 错误。4. 前端 AdminLTE 集成CSS 文件加载失败的四个真实原因与修复方案4.1 路径引用必须遵循 WAR 包结构/static/adminlte.cssvs../static/adminlte.cssindex.jsp中引入 CSS 的典型写法!-- 错误相对路径依赖当前 JSP 所在目录层级 -- link relstylesheet href../static/adminlte.css !-- 正确绝对路径从上下文根开始 -- link relstylesheet href${pageContext.request.contextPath}/static/adminlte.css为什么必须用${pageContext.request.contextPath}因为应用可能部署在/hrms或/ROOT下。硬编码/static/在 ROOT 上下文下有效但在/hrms下会请求http://localhost:8080/static/adminlte.css404而${pageContext.request.contextPath}动态输出/hrms或/保证路径正确。4.2 AdminLTE 版本兼容性adminlte.core.css与 jQuery 的版本锁死关系该 ZIP 包中出现adminlte.core.css和adminlte.core.min.css表明使用的是 AdminLTE v3v2 无 core 文件。v3 要求 jQuery ≥ 3.4.1而 Tomcat 默认的jsp-api.jar仅提供 JSP 规范不包含 jQuery。检查步骤打开webapp/static/js/确认存在jquery.min.js版本号需 ≥ 3.4.1在index.jsp中head里jQuery 必须在 AdminLTE JS 之前加载script src${pageContext.request.contextPath}/static/js/jquery.min.js/script script src${pageContext.request.contextPath}/static/js/bootstrap.bundle.min.js/script script src${pageContext.request.contextPath}/static/js/adminlte.min.js/script翻车现场若bootstrap.bundle.min.js在jquery.min.js之前加载浏览器控制台报Uncaught ReferenceError: $ is not definedAdminLTE 的侧边栏、折叠菜单全部失效。4.3 中文乱码终极排查从 MySQL 到 JSP 的四层字符集校验即使页面meta charsetUTF-8正确仍可能显示??必须逐层验证层级检查项验证命令/方法期望值MySQL 服务端服务器默认字符集mysql -u root -p -e SHOW VARIABLES LIKE character_set%;character_set_server utf8mb4MySQL 数据库hrms库字符集SHOW CREATE DATABASE hrms;DEFAULT CHARACTER SET utf8mb4MySQL 表emp表字符集SHOW CREATE TABLE emp;DEFAULT CHARSETutf8mb4JSP 页面页面编码声明查login.jsp第一行% page contentTypetext/html;charsetUTF-8 %必须存在且为UTF-8漏掉任何一层中文都会变问号。尤其注意db.properties中 JDBC URL 必须含?useUnicodetruecharacterEncodingutf8。4.4 Tomcat 乱码catalina.sh中 JVM 参数的隐形杀手Linux 下启动 Tomcat 后日志中System.out.println(张三)显示为å¼ ä¸‰根源是 JVM 默认编码非 UTF-8。修复方法永久生效编辑$TOMCAT_HOME/bin/catalina.sh在JAVA_OPTS定义处添加# 在 catalina.sh 中找到 JAVA_OPTS 行追加 JAVA_OPTS$JAVA_OPTS -Dfile.encodingUTF-8Windows 用户修改catalina.bat在set JAVA_OPTS行后添加set JAVA_OPTS%JAVA_OPTS% -Dfile.encodingUTF-8。后悔药若已部署可临时在web.xml中添加filter强制请求编码filter filter-nameCharacterEncodingFilter/filter-name filter-classorg.apache.catalina.filters.SetCharacterEncodingFilter/filter-class init-param param-nameencoding/param-name param-valueUTF-8/param-value /init-param /filter filter-mapping filter-nameCharacterEncodingFilter/filter-name url-pattern/*/url-pattern /filter-mapping5. 避坑指南五个高频翻车点与对应诊断命令附真实日志片段5.1 现象启动 Tomcat 后访问http://localhost:8080/hrms/login.jsp返回 404原因WAR 包未正确部署或web.xml中welcome-file-list未包含login.jsp解决检查$TOMCAT_HOME/webapps/下是否存在hrms/目录而非hrms.war查web.xml是否有welcome-file-list welcome-filejsp/login.jsp/welcome-file !-- 注意路径jsp/ 开头 -- /welcome-file-list若welcome-file写成login.jsp无jsp/前缀Tomcat 会在webapp/根下找但实际文件在webapp/jsp/下必然 404。5.2 现象登录时控制台报java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver原因mysql-connector-java-8.0.33.jar未放入WEB-INF/lib/或版本与 MySQL 不匹配解决确认src/main/webapp/WEB-INF/lib/下有mysql-connector-java-x.x.jarx.x ≥ 8.0若用 MySQL 5.7需降级到mysql-connector-java-5.1.49.jar验证命令jar -tf target/hrms/WEB-INF/lib/mysql-connector-java-8.0.33.jar | grep Driver应输出com/mysql/cj/jdbc/Driver.class。5.3 现象点击“员工列表”按钮后页面空白浏览器控制台报Uncaught TypeError: $ is not a function原因jQuery 未加载成功或加载顺序错误解决打开浏览器开发者工具 → Network 标签 → 刷新页面 → 查看jquery.min.js请求状态码是否为 200若为 404检查href路径是否漏写${pageContext.request.contextPath}若为 200 但控制台仍有报错查看 Elements 中script标签顺序确保 jQuery 在所有依赖它的 JS 之前。5.4 现象新增员工后数据库无记录但页面跳转到emp_list.jsp原因EmpServlet中add方法未 commit 事务或 DAO 层 SQL 语法错误解决查EmpDao.java中insert方法确认是否调用conn.commit()若用 JNDI 数据源通常已配置自动 commit在EmpDao.insert()中添加日志System.out.println(SQL: sql , params: Arrays.toString(params));将打印出的 SQL 粘贴到 MySQL 命令行执行观察是否报错如字段名拼写错误、NOT NULL 字段未赋值。5.5 现象Tomcat 启动后立即闪退catalina.out末尾显示SEVERE: Failed to initialize connector [Connector[HTTP/1.1-8080]]原因8080 端口被占用常见于 Skype、其他 Tomcat 实例解决Linuxnetstat -tuln | grep :8080→kill -9 PIDWindowsnetstat -ano | findstr :8080→taskkill /PID PID /F或修改$TOMCAT_HOME/conf/server.xml中Connector port8080为8081。6. 进阶技巧用 Maven 重构原始项目实现一键打包与跨环境部署6.1 为什么必须重构原始 ZIP 的三大维护痛点你拿到的 ZIP 是纯手工目录结构没有pom.xml这意味着无法用mvn clean package一键构建 WAR添加新 jar 包如 Apache Commons Lang需手动复制到WEB-INF/lib/开发环境localhost、测试环境192.168.1.100、生产环境prod-db的数据库配置无法隔离。重构目标将src/main/java、src/main/webapp等目录按 Maven 标准布局用profiles管理不同环境配置。6.2pom.xml核心配置定义 Java 版本、Tomcat 插件与依赖范围project xmlnshttp://maven.apache.org/POM/4.0.0 modelVersion4.0.0/modelVersion groupIdcom.hrms/groupId artifactIdhrms/artifactId version1.0-SNAPSHOT/version packagingwar/packaging properties maven.compiler.source8/maven.compiler.source maven.compiler.target8/maven.compiler.target project.build.sourceEncodingUTF-8/project.build.sourceEncoding /properties dependencies !-- Servlet APIprovided 范围由 Tomcat 提供不打入 WAR -- dependency groupIdjavax.servlet/groupId artifactIdjavax.servlet-api/artifactId version4.0.1/version scopeprovided/scope /dependency !-- MySQL 驱动 -- dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId version8.0.33/version /dependency /dependencies build plugins !-- Tomcat 插件mvn tomcat7:run 直接启动 -- plugin groupIdorg.apache.tomcat.maven/groupId artifactIdtomcat7-maven-plugin/artifactId version2.2/version configuration port8080/port path/hrms/path uriEncodingUTF-8/uriEncoding /configuration /plugin /plugins /build /project关键点scopeprovided/scope告诉 Maven 此依赖由容器提供打包时不包含避免与 Tomcat 自带的servlet-api.jar冲突tomcat7-maven-plugin虽名 tomcat7实则支持 Tomcat 8/9/10mvn tomcat7:run启动内嵌 Tomcat无需单独安装。6.3 多环境配置用profiles实现 dev/test/prod 数据库无缝切换在pom.xml中添加 profilesprofiles profile iddev/id properties jdbc.urljdbc:mysql://localhost:3306/hrms?useUnicodetrueamp;characterEncodingutf8amp;serverTimezoneAsia/Shanghai/jdbc.url jdbc.usernameroot/jdbc.username jdbc.password123456/jdbc.password /properties activation activeByDefaulttrue/activeByDefault /activation /profile profile idprod/id properties jdbc.urljdbc:mysql://prod-db:3306/hrms?.../jdbc.url jdbc.usernamehrms_prod/jdbc.username jdbc.password${env.PROD_DB_PASSWORD}/jdbc.password /properties /profile /profiles配合src/main/resources/db.properties使用jdbc.url${jdbc.url} jdbc.username${jdbc.username} jdbc.password${jdbc.password}打包命令开发环境mvn clean package默认激活 dev生产环境mvn clean package -Pprod -Denv.PROD_DB_PASSWORDreal_password。6.4 自动化部署脚本Linux 下一键重启 Tomcat 并发布新 WAR编写deploy.sh需赋予执行权限chmod x deploy.sh#!/bin/bash # 1. 停止 Tomcat $TOMCAT_HOME/bin/shutdown.sh sleep 5 # 2. 删除旧应用 rm -rf $TOMCAT_HOME/webapps/hrms* rm -rf $TOMCAT_HOME/work/Catalina/localhost/hrms* # 3. 复制新 WAR假设 mvn package 后生成 target/hrms-1.0-SNAPSHOT.war cp target/hrms-1.0-SNAPSHOT.war $TOMCAT_HOME/webapps/hrms.war # 4. 启动 Tomcat $TOMCAT_HOME/bin/startup.sh # 5. 检查启动日志tail -f 会持续输出CtrlC 退出 echo Deploy complete. Checking logs... tail -n 20 $TOMCAT_HOME/logs/catalina.out为什么这比手动复制更可靠强制删除work/目录清除 Jasper 编译缓存避免旧 JSP class 未更新sleep 5确保 Tomcat 进程完全退出防止端口占用tail -n 20快速确认最后一屏日志无 ERROR比打开完整日志高效。从那以后我每次交付课程设计都强制走一遍mvn clean package→sh deploy.sh→curl -I http://localhost:8080/hrms/login.jsp三连哪怕只是本地测试。因为真正的“跑通”不是浏览器看到登录框而是curl返回200 OK且Content-Type正确——这背后是数据库连接、Servlet 映射、JSP 编译、静态资源路径、字符集、Session 管理全部链条的咬合。希望帮到你。本文还有配套的精品资源点击获取

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号