servlet过滤器无法在tomcat中的虚拟目录上运行

时间:2015-10-22 20:48:08

标签: java tomcat glassfish servlet-filters tomcat8

我在glassfish3.x中配置了虚拟目录,我可以在其上编写过滤器。

举个例子,我可以从http://localhost/TestApp/web访问c:/ web上的文件,我也可以使用

在我的网络应用程序的web / xml文件中放置一个过滤器
<filter-mapping>
    <filter-name>dir_filter</filter-name>
    <url-pattern>/web/*</url-pattern>
</filter-mapping>

不幸的是Tomcat 8.0不允许我在上面写一个过滤器。它只是忽略过滤器并在Web目录中显示内容。

问题是任何人都可以访问&#34; web&#34;中的所有文件。文件夹中。

我们如何在虚拟目录上放置过滤器。

仅供参考 - 我已将网络应用程序命名为&#34; TestApp&#34;并且虚拟配置位于&#34; $ tomcat_dir / conf / Catalina / localhost&#34;文件名为#34; TestApp#web.xml&#34;文件并具有内容

<?xml version='1.0' encoding='utf-8'?> 
<Context docBase="C:/web" debug="0" privileged="true"></Context>

此致

1 个答案:

答案 0 :(得分:0)

上下文XML文件TestApp#web.xml将请求映射到/TestApp/web/...到webapp。在webapp中,路径是相对的,因此/TestApp/web/x.txt是指向webapp的路径/x.txt,并将提供文件C:/web/x.txt

将过滤器更改为/*,以便过滤所有请求,包括请求/x.txt