java web开发需区分开发期与运行期工具链,核心是servlet在web容器(如tomcat 9.x)中正确加载、编译、部署并响应http请求;maven规范项目结构,pom.xml中servlet-api scope设为provided;ide需配置自动编译与热更新,避免手动放war包与ide部署冲突。

Java Web开发环境不是装个IDE就完事,核心是让 Servlet 能被正确加载、编译、部署并响应HTTP请求——这需要明确区分「开发期」和「运行期」两套工具链,缺一不可。
用什么容器跑Servlet?别再直接写main方法了
Java Web不是普通Java程序,必须依赖符合Servlet规范的Web容器。本地开发最常用的是 Tomcat(推荐 9.x 或 10.x),它轻量、启动快、调试友好;Jetty 适合嵌入式或测试场景;WildFly 等全功能应用服务器反而容易让初学者混淆概念。
- 下载二进制版
apache-tomcat-9.0.xx.zip,解压后确认bin/startup.bat(Windows)或bin/startup.sh(macOS/Linux)可执行 - 不要用IDE内置的“Tomcat Server”向导一键配置——它常隐藏
CATALINA_HOME和webapps目录映射逻辑,导致后续部署路径错乱 - 手动验证:启动
startup.sh后访问http://localhost:8080,看到Tomcat欢迎页才算容器就位
Maven怎么组织Web项目结构?别手建WEB-INF了
现代Java Web项目必须用Maven(或Gradle)管理依赖和生命周期,否则连 javax.servlet-api 的作用域都搞不清。关键不是pom.xml写得多漂亮,而是目录结构必须严格遵循Servlet规范。
10分钟内自己学会PHP其中,第1篇为入门篇,主要包括了解PHP、PHP开发环境搭建、PHP开发基础、PHP流程控制语句、函数、字符串操作、正则表达式、PHP数组、PHP与Web页面交互、日期和时间等内容;第2篇为提高篇,主要包括MySQL数据库设计、PHP操作MySQL数据库、Cookie和Session、图形图像处理技术、文件和目录处理技术、面向对象、PDO数据库抽象层、程序调试与错误处理、A
- 用命令行生成标准骨架:
mvn archetype:generate -DgroupId=com.example -DartifactId=myweb -DarchetypeArtifactId=maven-archetype-webapp - 生成后立刻检查:根目录下必须有
src/main/webapp/WEB-INF/web.xml(即使内容为空),且src/main/java是源码根,src/main/resources放配置文件 -
web.xml在 Servlet 3.0+ 可省略,但初学建议保留——它明确定义了servlet、servlet-mapping和filter的绑定关系,比注解更直观 - 在pom.xml中把
javax.servlet-api的scope设为provided:它由Tomcat提供,打包时不能打进WAR,否则会类冲突
IDE里怎么让代码改完自动生效?别总重启Tomcat
热更新不是默认开启的,也不是所有改动都能热替换。Eclipse、IntelliJ 默认只支持类文件(.class)的局部重载,JSP、web.xml、静态资源等需额外配置。
立即学习“Java免费学习笔记(深入)”;
- IntelliJ:打开
Settings → Build → Compiler → Build project automatically,再按Ctrl+Shift+Alt+/打开Registry,启用compiler.automake.allow.when.app.running - Eclipse:右键项目 →
Properties → Deployment Assembly,确保src/main/webapp映射到/,且target/classes映射到WEB-INF/classes - 真正生效的前提是:修改的是已加载类的**方法体内部**;改了方法签名、新增类、改了
@WebServlet路径,仍需手动触发Update resources或Redeploy - 如果改完JSP没反应,检查Tomcat的
conf/web.xml中JspServlet的developmentinit-param 是否为true
最常被忽略的一点:webapps 目录下不要手动放WAR包又同时用IDE部署——两者冲突会导致类加载器找不到 ServletContext,报 java.lang.NoClassDefFoundError: javax/servlet/ServletContext 这类错误。选一种方式坚持到底。









