首页 > 编程语言 >java项目发布后到Tomcat时,总是带一层路径解决方案

java项目发布后到Tomcat时,总是带一层路径解决方案

时间:2024-09-25 20:51:06浏览次数:10  
标签:xml java Tomcat 项目 解决方案 路径 server ROOT

java项目发布后到Tomcat时,总是带一层路径
参考文章:java 线上项目访问项目 会多一层项目根路径
根据参考文章写的这篇文章,部分文章细节有完善和改动

在这里插入图片描述
Java Web应用中,当你把应用发布到Tomcat时,如果应用的web.xml配置文件中的<context-root>元素被设置成了非根路径,或者你在Tomcatserver.xml中配置了虚拟目录,那么Tomcat在访问这个应用时就会要求通过这个路径加以访问。
例如:
我打了一个war包,
包名是holletomcat,
那么我访问的时候
就需要:http://www.tomcat9073.com:8080/holletomcat/index.html
但是我想:http://www.tomcat9073.com:8080/index.html
让中间不带holletomcat
在这里插入图片描述


解决方案1:修改 server.xml文件里的Host 节点

不希望通过虚拟路径访问应用,可以在<Host>标签内部移除或修改<Context>元素,确保应用的路径设置为path="", 这样就可以通过IP或域名直接访问应用。

如果你是docker里的tomcat

/usr/local/tomcat/conf/server.xml

找到后在Host 节点下增加Context docBase内容是你的包名;
代码如下:

      <Host name="www.tomcat9073.com"  appBase="webapps" unpackWARs="true" autoDeploy="true"> 
        <Context path="" docBase="holletomcat" reloadable="true" />
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>

解决方案2:保持项目开发时的请求和部署时的请求路径一致

application.yml中配置多一层请求路径holletomcat,
线下开发的请求路径就成为:http://localhost:8080/chassis/getuserinfo

server:
  port: 8080
  servlet:
    context-path: /holletomcat

解决方案3:不想修改线下的路径,那只能修改线上Tomcat的配置了 有两种解决方法

这个我没有试
这个我没有试
这个我没有试

原理:Tomcat的默认根目录是ROOT,实际上ROOT这个项目在实际生产环境是没有用的,所以我们可以用我们的项目覆盖ROOT项目

操作过程:

  1. 删除ROOT下所有文件及文件夹
  2. 把我们项目的war包解压后,项目目录下的所有文件和子目录都拷贝到ROOT目录下即可
    或者有更狠的一招:直接删掉ROOT目录,然后把我们的项目打包名称改成ROOT.war,放到webapps下就行
    在这里插入图片描述

解决方案4:修改web.xml

该方案由文心一言提供

确保<context-root>元素的内容是空或者是/,这样应用就会被部署为根应用。

<context-root>/</context-root>

解决方案5:修改虚拟目录

该方案由文心一言提供

你也可以通过Tomcat的管理界面,在"Host Manager"中通过图形化界面修改虚拟目录。
确保在修改配置后重启Tomcat使设置生效。

标签:xml,java,Tomcat,项目,解决方案,路径,server,ROOT
From: https://blog.csdn.net/cplvfx/article/details/142104550

相关文章

  • Java毕业设计:基于Springboo律师事务所预约网站毕业设计源代码作品和开题报告怎么写
     博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩。项目配有对应开发文档、开题报告、任务书、P......
  • Java毕业设计:基于Springboot网球场地预约网站管理系统毕业设计源代码作品和开题报告怎
     博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩。项目配有对应开发文档、开题报告、任务书、P......
  • java中的接口
    接口表示一个类额外功能的实现,其作用是为了降低耦合。接口的使用注意事项1.接口中只能存在抽象方法,jvm默认会在方法前使用publicabstract进行修饰,刚学java推荐加上2.类和接口是实现关系可以通过关键字implements实现接口3.当一个具体的类实现一个接口的时候,......
  • JAVA基础:lock锁底层机制
    目录lock锁底层机制乐观锁lock锁底层机制lock锁底层使用的是CAS+AQS,在lock底层有一个计数器,记录锁被获取的状态,起初为0,当被抢占的时候变为1当我们调用lock.lock()方法,就是将状态从0改为1的过程。当我们调用lock,unlock()方法时,就是将状态从1改为0的过程当我们调用......
  • java读取寄存器数据
    一:概述在嵌入式系统或硬件编程中,Java通常不是首选语言,因为它运行在虚拟机上,与硬件层面的交互不够直接。然而,随着Java技术的发展,以及JNA(JavaNativeAccess)等库的出现,使得Java也能进行一些底层操作,包括读取寄存器数据。本文将探讨几种在Java中读取寄存器数据的方法,并提供实际案例。......
  • java读取寄存器数据
    一:概述在嵌入式系统或硬件编程中,Java通常不是首选语言,因为它运行在虚拟机上,与硬件层面的交互不够直接。然而,随着Java技术的发展,以及JNA(JavaNativeAccess)等库的出现,使得Java也能进行一些底层操作,包括读取寄存器数据。本文将探讨几种在Java中读取寄存器数据的方法,并提供实际案例。......
  • 汽车3d动画渲染选择哪个?选择最佳云渲染解决方案
    面临汽车3D动画渲染挑战?选择正确的云渲染服务至关重要。探索最佳解决方案,优化渲染效率,快速呈现逼真动画。汽车3d动画渲染选择哪个?对于汽车3D动画渲染,选择哪个渲染器取决于你的项目需求、预算和期望的效果。Blender是一个很好的开源选择,它内置了Eevee(适合快速预览和游戏引擎)、Cy......
  • 基于Java对数据库的增加和查询操作
     在开始编码前,我们需要先给IDEA配置下面两个jar文件:第一步:我们先进行数据库的连接publicclassDBUtils{/***打开数据库*///优化:让加载器等操作,只做一次publicstaticStringdriver;//驱动地址publicstaticStringurl;//数据库的地......
  • Java中集合泛型的学习
    集合遍历目录集合遍历泛型的基本概念泛型的好处泛型的使用1.泛型类2.泛型接口3.泛型方法Java集合框架中的泛型泛型通配符Java集合泛型是JavaSE1.5(Java5)中引入的一个重要特性,它允许在定义类、接口和方法时指定一个或多个类型参数。这些类型参数在实例化或调用时会被具体的......
  • Java毕业设计-基于SSM框架的校园失物招领平台系统项目实战(附源码+论文)
    大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。......