说明

使用 mvn archetype:generate 命令生成 Web 工程时,需要使用一个专门的 archetype, 这个专门生成 Web 工程骨架的 archetype 可以参照官网看到它的用法:

image_2023-01-11-19-36-11

构建命令:

mvn archetype:generate -D archetypeGroupId=org.apache.maven.archetypes -D arArtifactId=maven-archetype-webapp -D archetypeVserion=1.4

如果上面指令不能成功的创建可以使用: mvn archetype:generate

我们先不选择用哪个先输入 webapp 过滤出我们想要的再进行选择

image_2023-01-11-21-25-06

生成的 pom.xml

确认打包的方式是 war 包形式

<packaging>war</packaging>

生成的 web 工程的目录结构

image-20240208132043836

webapp 目录下有 index.jsp

WEB-INF 目录下有 web.xml

# 创建 Servlet

# 在 main 目录下创建 java 目录

image_2023-01-11-21-30-54

# 在 java 目录下创建 Servlet 类所在的包的目录

image-20240208132055163

# 在包下创建 Servlet 类

  • 在 web.xml 中注册 Servlet
<servlet>
  <servlet-name>servlet</servlet-name>
  <servlet-class>com.dkx.maven.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>servlet</servlet-name>
  <url-pattern>/helloServlet</url-pattern>
</servlet-mapping>
  • 在 index.jsp 页面编写超链接
<html>
<body>
<h2>Hello World!</h2>
<a href="/helloServlet">点击跳转</a>
</body>
</html>

JSP 全称是:Java Server Page, 和 Thymeleaf 一样,是服务器端页面渲染技术,这里我们不必关心 JSP 语法细节,编写一个超链接标签即可

  • 编译

此时直接运行 mvn compile 命令出错:

image_2023-01-11-22-02-10

上面的错误信息说明:我们的 web 工程用到了 HttpServlet 这个类,而 HttpServlet 这个类属于 servlet-api.jar 这个 jar 包,此时我们说,web 工程需要依赖 servlet-api.jar 包

image_2023-01-11-22-03-51

# 配置对 servlet-api.jar 包的依赖

对于不知道详细信息的依赖可以到点击 网页查询,使用关键字搜索,然后在搜索结果列表中选择适合的使用

image-20240208132112744

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.dkx.maven-web</groupId>
  <artifactId>pro02-maven-web</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>pro02-maven-web Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>
  <build>
    <finalName>pro02-maven-web</finalName>
  </build>
</project>

将信息加入到 pom.xml 中并重新执行 mvn clean compile 命令

# 将 web 工程打包为 war 包

运行 mvn package 命令,生成 war 包的位置如下如所示:

image_2023-01-11-22-16-35

# 将 war 包部署到 Tomcat 上运行

将 war 包复制到 Tomcat/webapps 目录下

image_2023-01-12-12-46-57