Tomcat配置项目直接通过http://ip:port访问

Tomcat配置项目直接通过/访问

遇到一个需求:因为这个域名下只部署了这一个项目,用户想直接通过域名来访问这个项目而不是加一层项目地址。

方式一

修改war文件名

  1. 将你的war文件重命名为ROOT.war。部署到Tomcatwebapps目录即可。
  2. 如果已经存在ROOT文件夹,删除它,以便Tomcat自动加解压缩并部署ROOT.war
  3. 启动Tomcat后,项目可以直接通过https://localhost:8080/直接访问。

方式二

修改server.xml文件:在<Host/>添加一个<Context/>并设置pathdocBase

<Context path="/" docBase="../webapps/messenger.war" reloadable="true"/>

或者

<Context path="/" docBase="/messenger" reloadable="true"/>

  • path: 指定Web应用程序的上下文路径,即在URL中访问应用程序的路径。例如,path="/myapp" 将使应用程序在 http://localhost:8080/myapp 上可用。

  • docBase: 指定Web应用程序的根目录,可以是WAR文件的路径或已解压的目录。例如,docBase="/path/to/myapp.war"docBase="/path/to/myapp"

  • reloadable: 指示是否支持应用程序的自动重新加载。设置为 true 表示支持自动重新加载,便于开发时的快速部署。默认值是 false

注意

这种方式webapps下面一个war包可以会生成两个文件夹,一个是ROOT,一个是应用程序的目录。这两个目录下的文件是相同的,也就是**tomcat把这项目加载了两次**,一个是/访问,一个是/应用程序访问的,这两套是相互隔离的。

解决方案

<Context path="/" docBase="${catalina.base}/apps/messenger.war" debug="0" reloadable="true"/>

不把war包放入到webapps中,而是而是通过docBase来指定war的路径,这样tomcat只会在webapps内生成一个ROOT目录。

相关推荐
Listen·Rain17 小时前
用AI开发出一个AI
java·人工智能·spring boot·tomcat·intellij-idea·mybatis·visual studio
大模型丫丫2 天前
Spring Boot 入门指南:从零开始构建微服务
spring boot·微服务·firefox
Full Stack Developme2 天前
SpringBoot 内嵌 Tomcat 的启动流程
spring boot·后端·tomcat
Full Stack Developme2 天前
Tomcat 如何处理HTTP请求
java·http·tomcat
Full Stack Developme3 天前
Tomcat 设计原理
java·tomcat
Full Stack Developme3 天前
Tomcat NIO连接器内部如何实现零拷贝 Session管理如何实现集群同步
java·tomcat·nio
BullSmall3 天前
Tomcat 部署 Jenkins → Docker Jenkins 完整迁移方案
docker·tomcat·jenkins
格尔曼Noah4 天前
Safari浏览器中如何只允许指定网站下载
前端·safari
baozhengw4 天前
信创改造-SpringBootJar包改为WAR包部署Tomcat
java·tomcat
蚰蜒螟7 天前
一次 Spring AOP 与定时任务引发的死锁排查实录
java·spring·firefox