javaweb中web.xml和server.xml的配置冲突如何解决?

发布于 2022-09-12 00:30:23 字数 1085 浏览 12 评论 0

项目中用到一个过滤器,因为和tomcat静态资源路径配置上的冲突,导致过滤器失效。
相关代码如下:


server.xml

<!-- 静态资源路径配置 -->
<Context crossContext="true" docBase="/var/docs/pdf/" path="/pdf" reloadable="true"/>

通过此配置,可以由 localhost:8080/pdf/aaa.pdf 访问到静态资源。


web.xml:

    <filter>
        <filter-name>PDFFilter</filter-name>
        <filter-class>com.plt.filter.PDFFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>PDFFilter</filter-name>
        <url-pattern>*.pdf</url-pattern>
    </filter-mapping>

通过此配置,所有 .pdf 的静态资源请求都会先进入过滤器。


当web.xml加入过滤器配置后,由 localhost:8080/pdf/aaa.pdf 发生的访问静态资源请求不再经过过滤器;
得从 localhost:8080/aaa.pdf 或者 localhost:8080/pdfx/aaa.pdf 进入才能匹配到过滤器(即/pdf这一路由输入不正确),可是这样又无法访问到静态资源;
将过滤器匹配规则改为 /pdf/* 的话,无论如何也都无法进入过滤器;
希望能实现形似 /pdf/*.pdf 的匹配逻辑,可是该逻辑不被规则允许。
此问题如何解决?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

打小就很酷 2022-09-19 00:30:23

web.xml再配置下面看看

<filter>
    <filter-name>PDFFilter</filter-name>
    <filter-class>com.plt.filter.PDFFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>PDFFilter</filter-name>
    <url-pattern>/pdf/*.pdf</url-pattern>
</filter-mapping>
春风十里 2022-09-19 00:30:23

直接写一个servlet,登陆的读取pdf, 输出信息. 没登录的返回个提示.
离了tomcat不会输出静态资源了么?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文