javaweb中web.xml和server.xml的配置冲突如何解决?
项目中用到一个过滤器,因为和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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
web.xml再配置下面看看
直接写一个servlet,登陆的读取pdf, 输出信息. 没登录的返回个提示.
离了tomcat不会输出静态资源了么?