webapps
和 target
是在 Java Web 应用开发和部署中经常遇到的两个目录,它们的功能和作用是不同的。以下是它们的详细区别:
🔸 webapps
—— Tomcat 的部署目录
位置: 位于 Tomcat 安装目录下,例如:
$TOMCAT_HOME/webapps
作用: Tomcat 在启动时会自动扫描该目录下的
.war
文件或已解压的 Web 应用文件夹并进行部署。使用方式:
- 把编译好的
.war
文件放到webapps
中,Tomcat 会自动解压并部署。 - 也可以直接将解压后的 Web 应用目录放入
webapps
,无需.war
文件。
- 把编译好的
示例:
1
2$TOMCAT_HOME/webapps/myapp.war
$TOMCAT_HOME/webapps/myapp/ (解压后的文件夹)
🔸 target
—— Maven/Gradle 构建输出目录
- 位置: 位于你的项目目录下,例如:
/your-project/target
- 作用: 存放项目构建后的输出内容,包括
.class
文件、打包好的.war
文件、临时构建文件等。 - 自动生成: 每次运行 Maven 的
mvn package
或mvn install
时,都会生成或更新。 - 不能直接部署:
target
是本地构建目录,Tomcat 不会读取它,除非你手动将.war
拷贝到webapps
中。
🔄 常见流程:
开发完成后,使用 Maven 构建项目:
1
mvn clean package
构建后会在
target/
下生成.war
文件,比如:target/myapp.war
手动将该
.war
文件拷贝到 Tomcat 的webapps/
目录:1
cp target/myapp.war $TOMCAT_HOME/webapps/
启动 Tomcat,自动部署。
✅ 总结对比表:
项目 | webapps |
target |
---|---|---|
所属 | Tomcat | 开发构建工具 (如 Maven) |
功能 | Tomcat 部署目录 | 项目构建输出目录 |
使用方式 | Tomcat 启动时自动读取 | 需要手动拷贝或通过插件部署 |
是否自动生成 | 否,需要你放置文件 | 是,构建时自动生成 |
内容 | .war 或 Web 应用目录结构 |
.class 文件、.war 文件等 |
如需自动将 target/*.war
部署到 Tomcat,可以使用插件(如 Maven 的 tomcat7-maven-plugin
)进行自动部署。
要通过浏览器访问部署在 Tomcat 的 webapps
目录中的 Web 应用
- Tomcat 正常启动;
- Web 应用已正确部署到
webapps
; - 使用正确的 URL 进行访问。
✅ 一、访问请求的基本格式:
1 | http://<服务器IP>:<端口>/<项目名>/<资源路径> |
服务器IP
:部署 Tomcat 的主机 IP,开发本地通常是localhost
或127.0.0.1
端口
:默认是8080
,除非你改了server.xml
项目名
:等于部署在webapps
下.war
或文件夹的名字(除非是 ROOT)资源路径
:Web 应用中的请求路径,比如 JSP、Servlet、Spring 控制器路径等
🔸 二、示例说明
假设你的 Tomcat 安装在本地,端口是默认的 8080
,webapps
下有一个应用叫 myapp
:
示例 1:访问首页
1 | http://localhost:8080/myapp/ |
默认会加载
web.xml
中配置的welcome-file
(比如index.jsp
)
示例 2:访问 JSP 页面
1 | http://localhost:8080/myapp/login.jsp |
示例 3:访问 Servlet
如果在 web.xml
中定义了一个 Servlet 映射路径 /login
,那么可以通过:
1 | http://localhost:8080/myapp/login |
示例 4:访问 Spring MVC Controller
如果你用的是 Spring MVC,并在 Controller 中写了路径:
1 |
则访问地址是:
1 | http://localhost:8080/myapp/user/list |
✅ 三、特殊情况:ROOT 项目
如果你将应用部署为:
1 | webapps/ROOT/ |
或:
1 | webapps/ROOT.war |
那么你就不需要写项目名,直接访问:
1 | http://localhost:8080/ |
✅ 四、排查访问不了的问题
问题 | 检查方向 |
---|---|
页面 404 | 路径是否正确、应用是否成功部署 |
端口访问不了 | Tomcat 是否启动、端口是否防火墙拦截 |
报错页面 | JSP/Servlet/Controller 是否有异常 |
赏
使用支付宝打赏
使用微信打赏
若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏