关于使用ssm与spring时,配置tomcat 虚拟目录( doBase )中的一些坑
一、使用SSM需要 配置虚拟目录时 tomcat的配置
在tomcat server.xml的<HOST></HOST>中加入以下内容
在配置完成之后,当我们访问URL 为 ip+端口/users的时候,服务器就会去访问我们的doBase下的路径
比如,在users目录下有 一个名为abc.jpg的文件 ,
那么我们 访问 ip+端口/users/abc.jpg 就会得到G:/imooc-videos-resources/douyin/users/下的abc.jpg。
需要注意的是 设置虚拟目录时,在ip+端口号后面不需要加上项目名,举个例子
这是我项目的访问路径,如果你使用ip+端口号/项目名/users是访问不了虚拟目录的,必须使用ip+端口号/users 才能映射到我们配置的虚拟目录,所以其实tomcat doBase 映射 只针对 ip+端口号 下的映射,不论其他的因素。
下面通过从数据库中读取字段,然后配置tomcat虚拟目录的实例来演示
数据库的内容:
图片真实的存储路径
虚拟目录的配置:
需要注意的是doBase G:/imooc-videos-resources/douyin/users 这里是固定的写法,写为G:/imooc-videos-resources/douyin/ 还是G:/imooc-videos-resources/douyin 都是无法识别的,本来我想的是通过/users映射到G:/imooc-videos-resources/douyin/ 那么就可以在douyin目录下进行查找 刚好是可以找到users目录的,但实践证明,这样是不行的。
结果测试:
二、如果是springboot项目
使用Springboot时 在类中的代码如下 (数据库,以及图片的真实路径,等其他信息都是一样的)
这里的意思是/** 表示匹配到的所有的静态资源,都会去G:/imoo-videos-resources/douyin/ 下的目录去进行查找,
这里与在使用SSM在tomcat中的配置不同的是,使用SSM时在tomcat中映射为 G:/imoo-videos-resources/douyin/ 是无法找到的,必须 配置为
<Context docBase="G:/imooc-videos-resources/douyin/users" path="/users" />
<Context docBase="G:/imooc-videos-resources/douyin/bgm" path="/bgm" />
才能匹配到
而使用springboot当我们映射为G:/imoo-videos-resources/douyin/ 。那么 douyin目录下的所有文件(夹)其实都是匹配到的。