添加依赖pom.xml文件:到Maven Repository里面寻找Java Servlet API jar包
(Tomca版本问题(如果报错为500
)
-
Tomcat 10+ 把包名从
javax.*改成了jakarta.* -
如果代码还在用
javax.servlet,但Tomcat为10+就找不到这个包 -
错误信息里的
NoClassDefFoundError就是因为包名不匹配
)

更新web.xml配置: (可以上tomcat里面找到对应的xml文件,复制上去)
注意servlet-mapping里面的url-pattern必须斜杠开头
-
<servlet>只是告诉容器:"我创建了一个名叫 hellow 的 Servlet" -
但没有
<servlet-mapping>告诉容器:"这个 hellow Servlet 应该对应哪个 URL 访问路径"
添加Tomcat时候,分为Tomcat和TomcatEE
区别:
-
用 Tomcat,你需要什么功能,就自己"买"什么"家具"(依赖库)放进去。
-
用 TomEE,开发商(Apache)已经把常用的"家具"(企业级功能)都给你配好了,你直接"拎包入住"就行。
如果报错为405
错误信息说:"此URL不支持Http方法GET",意思是你的 Servlet 没有正确处理 GET 请求。
问题就在 super.doGet(req, resp) 这行!
调用父类的 doGet() 方法,而父类(HttpServlet)的默认实现就是返回 405 错误。
Maven配置
-
clean :会删除
target目录,清理之前的所有编译文件 -
package:会重新编译、测试、打包你的项目
-
成功后会在
target目录下生成:Maven_01_Test.war文件
分析结构:
web.xml文件:
.xml:是一种标记语言,用标签<xxx>来写配置
XML
<servlet>
<servlet-name>hellow</servlet-name> <!-- 给厨师起个小名叫"hellow" -->
<servlet-class>com.counter.servlet</servlet-class> <!-- 告诉服务员,hellow 厨师是张三(具体哪个类) -->
</servlet>
<servlet-mapping>
<servlet-name>hellow</servlet-name> <!-- 当客人点 hellow 套餐时 -->
<url-pattern>/hellow</url-pattern> <!-- 客人喊"/hellow" 这个菜名 -->
</servlet-mapping>
-
当用户在浏览器输入
http://localhost:8080/项目名/hellow -
Tomcat 就会去找
com.counter.servlet这个类 -
然后执行里面的
doGet()或doPost()方法
总结:web.xml 就是你的"项目说明书",告诉 Tomcat 服务器你的网站该怎么运行。
pom.xml文件
XML
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<!-- 1. POM版本:固定用4.0.0 -->
<modelVersion>4.0.0</modelVersion>
<!-- 2. 项目坐标(项目的身份证) -->
<groupId>com.counter</groupId> <!-- 公司名(反写的域名) -->
<artifactId>Maven_01_Test</artifactId> <!-- 项目名 -->
<version>1.0-SNAPSHOT</version> <!-- 版本号 -->
<packaging>war</packaging> <!-- 打包方式:war(网页应用) -->
<!-- 3. 项目属性(统一管理版本号) -->
<properties>
<maven.compiler.source>21</maven.compiler.source> <!-- Java版本 -->
<maven.compiler.target>21</maven.compiler.target> <!-- Java版本 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<!-- 4. 依赖清单(要买什么材料) -->
<dependencies>
<!-- Servlet API(做网站必备) -->
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>6.0.0</version>
<scope>provided</scope> <!-- Tomcat已提供,打包时不用包含 -->
</dependency>
<!-- 如果需要JSP,加这个 -->
<dependency>
<groupId>jakarta.servlet.jsp</groupId>
<artifactId>jakarta.servlet.jsp-api</artifactId>
<version>3.1.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
<!-- 5. 构建配置(怎么装修房子) -->
<build>
<finalName>Maven_01_Test</finalName> <!-- 打包后的WAR文件名 -->
<plugins>
<!-- 编译插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
</plugin>
</plugins>
</build>
</project>
第一到第五行
XML
<groupId>com.counter</groupId> <!-- 你的包名:com.counter -->
<artifactId>Maven_01_Test</artifactId> <!-- 项目名:Maven_01_Test -->
<version>1.0-SNAPSHOT</version> <!-- 版本:1.0-SNAPSHOT(开发版) -->
<packaging>war</packaging> <!-- 类型:war(网页应用) -->
2️⃣ 依赖(第6-8行)
XML
<dependencies>
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>6.0.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
3️⃣ properties(第3行)
XML
<properties>
<maven.compiler.source>21</maven.compiler.source> <!-- 用Java 21编译 -->
</properties>
统一管理各种版本号,以后改版本只改这里
Maven 生命周期
XML
clean → 打扫卫生(删除target文件夹)
compile → 编译代码(把.java变成.class)
test → 运行测试(如果有测试代码)
package → 打包(生成war/jar文件)
install → 装到本地仓库(给别的项目用)
常见问题
Q:为什么要用 Maven?
A:不用手动找jar包、不用手动添加依赖、自动下载、统一版本。
Q:provided 是什么意思?
A:"自带材料"------Tomcat 服务器里已经有 Servlet 的jar包了,我打包时不用再塞进去,省空间。
Q:我的项目报错说找不到 Servlet 类?
A:检查 pom.xml 里有没有加 Servlet 依赖!