今天在维护一个 java项目的时候,遇到了 tomcat不能遍历某个目录的情况
具体为:在通过用IP来访问 webapps根目录时,出现上图
而在上面的图中,除了web目录不能进入,其他的都可以,
web目录下面的文件有:
从网上的资料来看,基本都是说是因为文件里面没有WEB-INF,但是我加了这个目录和web.xml后,任然不能访问。
在群里问了很多人,也找了一些方法,任然没有解决
最后我在 server.xml的
<Host name=”localhost” debug=”0″ appBase=”webapps”
unpackWARs=”true” autoDeploy=”true”
xmlValidation=”false” xmlNamespaceAware=”false”>
<Host name=”localhost” debug=”0″ appBase=”webapps” unpackWARs=”true” autoDeploy=”true” xmlValidation=”false” xmlNamespaceAware=”false”>
下面加了
<Context path=”/web” docBase=”web” debug=”0″
reloadable=”true” crossContext=”true”>
</Context>
就可以进入 web 目录 了
网上看了下 <host>里面的<context>的作用,大概就是
<Context>代表了运行在<Host>上的单个Web应用,一个<Host>可以有多个<Context>元素,每个Web应用必须有唯一的URL路径,这个URL路径在<Context>中的属性path中设定。
<Context>元素的属性:
path:指定访问该Web应用的URL入口。
docBase:指定Web应用的文件路径,可以给定绝对路径,也可以给定相对于<Host>的appBase属性的相对路径,如果Web应用采用开放目录结构,则指定Web应用的根目录,如果Web应用是个war文件,则指定war文件的路径。
reloadable:如果这个属性设为true,tomcat服务器在运行状态下会监视在WEB-INF/classes和WEB-INF/lib目录下class文件的改动,如果监测到有class文件被更新的,服务器会自动重新加载Web应用。
在开发阶段将reloadable属性设为true,有助于调试servlet和其它的class文件,但这样用加重服务器运行负荷,建议在Web应用的发存阶段将reloadable设为false。