Tomcat加Maven配置

添加依赖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配置

  1. clean :会删除 target 目录,清理之前的所有编译文件

  2. package:会重新编译、测试、打包你的项目

  3. 成功后会在 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 依赖!

相关推荐
马猴烧酒.1 小时前
【JAVA算法|hot100】数组类型题目详解笔记
java·笔记
人生导师yxc1 小时前
IDE缓存配置等位置更改(自存)
java·ide·intellij-idea
indexsunny1 小时前
互联网大厂Java面试实战:Spring Boot与微服务在电商场景的应用
java·spring boot·微服务·面试·kafka·prometheus·电商
甲枫叶1 小时前
【claude产品经理系列13】核心功能实现——需求的增删改查全流程
java·前端·人工智能·python·产品经理·ai编程
时艰.1 小时前
分布式事务在电商项目中的应用
java·分布式
倚肆1 小时前
Spring WebSocket 核心注解详解
java·websocket·spring
重生之后端学习1 小时前
39. 组合总和
java·数据结构·算法·职场和发展·深度优先
百锦再1 小时前
Spring Boot Web 后端开发注解核心
开发语言·spring boot·python·struts·spring cloud·kafka·maven
QQ 31316378901 小时前
文华财经指标公式
java