说明
使用 mvn archetype:generate 命令生成 Web 工程时,需要使用一个专门的 archetype, 这个专门生成 Web 工程骨架的 archetype 可以参照官网看到它的用法:
构建命令:
mvn archetype:generate -D archetypeGroupId=org.apache.maven.archetypes -D arArtifactId=maven-archetype-webapp -D archetypeVserion=1.4
如果上面指令不能成功的创建可以使用: mvn archetype:generate
我们先不选择用哪个先输入 webapp 过滤出我们想要的再进行选择
生成的 pom.xml
确认打包的方式是 war 包形式
<packaging>war</packaging>
生成的 web 工程的目录结构
webapp 目录下有 index.jsp
WEB-INF 目录下有 web.xml
# 创建 Servlet
# 在 main 目录下创建 java 目录
# 在 java 目录下创建 Servlet 类所在的包的目录
# 在包下创建 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
命令出错:
上面的错误信息说明:我们的 web 工程用到了 HttpServlet 这个类,而 HttpServlet 这个类属于 servlet-api.jar 这个 jar 包,此时我们说,web 工程需要依赖 servlet-api.jar 包
# 配置对 servlet-api.jar 包的依赖
对于不知道详细信息的依赖可以到点击 网页查询,使用关键字搜索,然后在搜索结果列表中选择适合的使用
<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 包的位置如下如所示:
# 将 war 包部署到 Tomcat 上运行
将 war 包复制到 Tomcat/webapps 目录下