前言:这里构建一个简单的Maven项目,删掉里面的src目录,然后在这个Maven项目中建立module,并配置Tomcat容器,然后启动容器。
浏览器 > Tomcat > webapp
1、创建Maven项目
这里面将生成的 src 目录删掉了,之后就在里面添加 module。
当前这个就是Maven主工程
2、建立module
建立第一个module,模型选择 webapp
创建之后目录的样子
然后我们在 main 目录上添加上java 和 resources 目录,并指定是源码和资源目录
3、看主工程下的 pom.xml 文件
- 主工程(当前app01的父目录)pom.xml
<modules>
<module>servlet-01</module>
</modules>
- 在 app01 项目中 pom.xml
<parent>
<artifactId>ServletApp</artifactId>
<groupId>org.example</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
- 父项目中的依赖,子项目可以直接使用。
4、配置Tomcat
找到 Tomcat Server,Local 代表本地,Remote 远程,这里选择local
紧接着出现以下内容,需要配置全
- Warning:No artifacts marked for deployment
- 这个提示是说 没有要部署的 artifacts
然后我们就需要配置 Deployment
Deployment主要是关于如何部署和管理Tomcat应用程序的过程。这包括选择适当的部署方式(如WAR方式或explded方式),以及配置Tomcat服务器以实现应用程序的快速更新和调试。在Tomcat中,Deployment涉及到将应用程序部署到服务器上,并确保服务器能够正确地加载和运行这些应用程序。
部署方式:Tomcat支持两种主要的部署方式,即WAR方式和explded方式。WAR方式要求通过创建新的WAR文件来使更改生效,而explded方式则允许在调试模式下立即应用对Java和JSP文件的更改,这通过配置Server的Update action选项为更新类和资源来实现
这个时候点击+号可能会没有Artifact,然后我们就要配置 Artifact
5、配置 Artifact
5.1、先添加Facets
file > Project Structure > Facets > 点击 + 号 > 选择 web > 选择我们要添加的子项目
5.2、以上步骤确认后,添加 artifacts
5.3、然后再次在Artifacts中点击+号
刚才我们选的是 Web Application:Exploded,这次我们选择 Web Application:Archive
然后得到以下内容:
到这里我们的 artifacts 就配置好了,然后去 Tomcat 的 deployment 中导入我们的 artifact
6、Deployment导致构建资源
7、接下来写一个servlet Demo
7.1、在父级的 pom.xml 中添加 servlet 依赖
<dependencies>
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
7.2、在app01子项目中添加我们的 Servlet 代码
7.3、添加mapping映射
首先我们先将 app01 > src > webapp > WEB-INF > web.xml 进行更新,我用的是Tomcat里面的web.xml,并删掉了其中不需要的东西,得到以下内容
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0"
metadata-complete="true">
</web-app>
然后就可以在这里添加映射了
为什么要映射?
答:浏览器要链接web服务器访问到我们的java程序,所以要在web服务器中注册我们写的Servlet,还需要给它一个浏览器能够访问的路径。
1、<!--web.xml 中是配置我们web的核心应用 -->
<!--1、注册 Servlet -->
<servlet>
<servlet-name>helloServlet</servlet-name>
<servlet-class>com.cn.servlet.HelloServlet</servlet-class>
</servlet>
<!--2、一个servlet 对应一个 mapping:映射 -->
<servlet-mapping>
<servlet-name>helloServlet</servlet-name>
<!--请求路径-->
<url-pattern>/hello</url-pattern>
</servlet-mapping>
2、<!--可以自定义前缀或后缀实现请求映射 -->
<!--自定义前缀 -->
<servlet-mapping>
<servlet-name>helloServlet</servlet-name>
<url-pattern>/hello*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>helloServlet</servlet-name>
<url-pattern>/hello/*</url-pattern>
</servlet-mapping>
<!--自定义后缀 -->
<servlet-mapping>
<servlet-name>helloServlet</servlet-name>
<url-pattern>*.do</url-pattern> <!--注意不能加/,否则会报错 -->
</servlet-mapping>
3、<!--默认请求路径 ,请求会直接进入到这个映射的页面当中,会干掉首页,尽量不要用-->
<servlet-mapping>
<servlet-name>helloServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
示例: