发生情况

项目在部署到tomcat下的时候怎么都没有springboot的初始化信息,于是百度搜了一下。发现都在说的是缺少了SpringBootServletInitializer这个东东,然后加上去了,还是没有效果。
2020-02-02T06:04:10.png
一直在排查一直在测试,最后在某一次偷懒的过程中发现了问题
因为每次我部署程序都是直接把代码丢到tomcat的webapp目录下,需要来回的复制,测试起来很麻烦
因此就直接想到了将目录设置为那个不就行了吗,于是在server.xml中配置了一句:
2020-02-02T06:13:31.png

<Context path="" docBase="D:\GitPath\JavaWeb\XXXX\XXXX-1.0-SNAPSHOT" debug="0" reloadable="true" />

这里配置好你的项目的所在路径,然后就神奇的启动了。没想到一次偷懒居然真的能搞出来
注意代码中的appBasedocBase不要指向同一个目录
appBase会将项目下的文件夹当做一个app来进行处理,因此全部代码放在根目录并没有用,但是可以用一个文件夹来承载


至于具体原理,可以这么理解:

用户根据网址的host进行访问的时候会对应该host下的所有部署
appBase下的war包会部署为一个app
appBase下的目录会部署为一个app
此时再通过context可以指定访问目录和代码docBase的映射关系
因此这么写应该也是对的:
webapp目录下建立ceshi文件夹,并将代码放在这里

<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">
    <Context path="/" docBase="ceshi" debug="0" reloadable="true" />
</Host>    

然后直接访问localhost:端口应该可以直接访问你要的app
以上仅为个人感觉,需要一定的证实

最后修改:2020 年 03 月 07 日
如果你觉得我对你起到了帮助,请随意打赏