1. 环境准备与项目创建第一次用IDEA搞JavaWeb项目时我对着空荡荡的界面发呆了半小时。后来才发现环境配置就像搭积木缺哪块都跑不起来。这里分享我的踩坑经验手把手带你跳过那些新手必掉的坑。装JDK时很多人会忽略版本匹配问题。我建议直接去Oracle官网下LTS版本比如JDK 17安装后记得配置JAVA_HOME环境变量。验证方法是在终端输入java -version看到类似这样的输出就对了java version 17.0.8 2023-07-18 LTS Java(TM) SE Runtime Environment (build 17.0.89-LTS-211)打开IDEA新建项目时关键是要选对模板。在左侧菜单选择Java Enterprise右边勾选Web Application和Create web.xml。这里有个隐藏坑点如果你用的Jakarta EE规范需要手动把web.xml里的javax改成jakarta。项目命名建议用全小写加中划线比如my-web-demo这样后期打包时不会出路径问题。2. 模块配置核心技巧配置Modules时我犯过最蠢的错误就是把web资源目录设成了src/main/java。正确做法是在项目结构里找到Modules - Web把Web Resource Directory指向src/main/webapp。如果没有这个目录右键项目新建Directory时一定要勾选Mark Directory as - Web Resources Root。web.xml的配置现在虽然可以省略Spring Boot项目基本不用但传统项目还是需要的。我习惯在web.xml里加个welcome-file-list像这样welcome-file-list welcome-fileindex.jsp/welcome-file /welcome-file-list依赖管理是另一个重灾区。新手常犯的错误是手动往lib文件夹塞jar包结果打包时漏掉依赖。现在都用Maven/Gradle了在pom.xml里加依赖更靠谱。比如要加Servlet支持就写dependency groupIdjakarta.servlet/groupId artifactIdjakarta.servlet-api/artifactId version6.0.0/version scopeprovided/scope /dependency3. 打包成War的实战细节打包War文件时90%的问题出在资源遗漏。我总结了个检查清单确认WEB-INF下有lib文件夹检查静态资源js/css/img是否在webapp目录验证编译输出路径默认是target/classesIDEA的Artifacts配置有个隐藏功能可以自定义War包结构。比如要把前端编译产物放进去就在Output Layout里右键添加Directory Content选中你的dist文件夹。我常用的目录结构是这样的my-web-demo.war ├── META-INF ├── WEB-INF │ ├── classes │ ├── lib │ └── web.xml └── static ├── css ├── js └── index.html打包前建议先clean再build。遇到过缓存问题导致旧代码被打包的情况现在养成了习惯先点菜单栏的Build - Clean Project再Build - Build Artifacts。4. Tomcat部署避坑指南本地测试推荐用Tomcat 9.x以上版本下载解压后要在IDEA里配置Server。关键步骤Edit Configurations - Add New - Tomcat Server指定Tomcat Home路径Deployment选项卡添加刚打的War包有个容易忽略的细节Context Path。默认是War包名但生产环境通常要改成/。在Deployment选项卡的Application context里修改。我遇到过因为没改这个导致404的坑排查了半天。启动前记得检查端口冲突。常用命令netstat -ano|findstr 8080Windows或lsof -i:8080Mac/Linux。如果端口被占可以在server.xml里修改Connector的port属性。测试时别只用浏览器用Postman或Apifox发请求更靠谱。我习惯写个简单的Servlet做健康检查WebServlet(/health) public class HealthCheck extends HttpServlet { protected void doGet(HttpServletRequest req, HttpServletResponse resp) { resp.setContentType(text/plain); resp.getWriter().print(OK); } }5. 生产环境部署建议实际部署时发现直接扔War包到webapps虽然简单但不利于运维。现在更推荐的做法用Tomcat Manager API远程部署配置CI/CD自动发布使用Docker容器化日志配置也很关键。建议在WEB-INF下新建classes文件夹放logback.xml或log4j2.xml。生产环境记得把日志级别调到WARN避免磁盘爆满。我吃过这个亏DEBUG日志一天写了50G。监控方面可以加个Servlet监听器WebListener public class AppListener implements ServletContextListener { public void contextInitialized(ServletContextEvent sce) { Metrics.start(); } }性能调优有个立竿见影的技巧在Tomcat的context.xml里加Resources cachingAllowedtrue/静态资源加载速度能快3倍。JVM参数建议设置-Xmx为物理内存的70%比如4G机器就设-Xmx3g。