欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用tomcat访问本地目录,从server.xml设置了虚拟目录后,tomcat服务器运行一闪而过

程序员文章站 2022-05-28 08:02:32
...


在学习tomcat的过程中,因为想要实现在网页上显示本地图片的功能,所以直接使用了本地地址,但是却发现tomcat无法直接访问本地文件,于是在网上找了一些文章,发现要配置虚拟目录,于是使用了在server.xml中配置虚拟目录的方法,但是在我自己的电脑上运行成功后,在实验室中运行却一闪而过,出现了错误,服务器并没有启动,所以在网上又找了很久才找到解决办法,写下了这篇博客。

Tomcat配置虚拟目录的三种方式:

第一种方式:在server.xml的host标签中添加context配置

在tomcat文件夹下的conf文件夹里面有server.xml的配置文件,在其中标签中加入下面这段就可以把本地E:\image\目录映射到服务器管理的虚拟目录/otherDir上,使用/otherDir就可以访问E:\image\文件夹

在这里插入代码片
1  <Host name="localhost"  appBase="webapps"
2         unpackWARs="true" autoDeploy="true">
3 
4       <Context path="/otherDir" docBase="E:\image\" reloadable="true"></Context>
5      </Host>

按说这样配置之后就可以了但是有些机器中却会出现运行tomcat一闪而过的情况。原因是在Tomcat6之后中,不再建议在server.xml文件中使用配置context元素的方式来添加虚拟目录的映射,因为每次修改server.xml文件后,Tomcat服务器就必须要重新启动后才能重新加载server.xml文件。在Tomcat服务器的文档http://localhost:8080/docs/config/context.html中有这样的说明:

It is NOT recommended to place elements directly in the
server.xml file. This is because it makes modifying the Context
configuration more invasive since the main conf/server.xml file
cannot be reloaded without restarting Tomcat.

Individual Context elements may be explicitly defined:

  • In an individual file at /META-INF/context.xml inside the application files. Optionally (based on the Host’s copyXML attribute) this may be copied to$CATALINA_BASE/conf/[enginename]/[hostname]/ and renamed to application’s base file name plus a “.xml” extension.

  • In individual files (with a “.xml” extension) in the$CATALINA_BASE/conf/[enginename]/[hostname]/ directory. The context path and version will be derived from the base name of the file (the file name less the .xml extension). This file will always take precedence over any context.xml file packaged in the web application’s META-INF directory.

  • Inside a Host element in the main conf/server.xml.

第二种方式:把文件夹放入webapps文件夹中

在tomcat中,webapps文件夹是存放网站的文件夹,服务器可以直接访问此文件夹,于是我们把文件夹放入此文件夹就可以从服务器*问,但是有一点要注意,从服务器中访问的时候,并非是本地目录,而是服务器自动生成的原名虚拟目录.
例如:
在webapps文件夹中新建一个名为image的文件夹,那么服务器会自动为其生成一个名为/image/虚拟目录,我们使用/image就可以访问image文件夹中的文件。

第三种方式:在localhost文件夹下添加xml文件

另外一种方法就是我们在tomcat\Catalina\localhost中添加xml文件来配置虚拟目录,在xml中加入后,服务器就会生成一个以此xml文件名命名的虚拟目录。
例如:
在tomcat\Catalina\localhost中新建一个名为image.xml的文件,在image.xml中写入下面代码

1 <Context docBase="E:\image" />

就可以使用/image来访问E:\image中的文件了。

备注:使用这种方式配置的虚拟目录在更改后不需要重启tomcat服务器就可以生效。