Filter过滤器对虚拟路径的文件请求无效

麦田捕手 2018-09-13 12:12:39
最近在做图片文件防盗链处理,用的是tomcat服务器,目前是通过filter来实现,通过客户端传递过来的token判断请求是否有效。
目前发现一个问题,当我把图片放在webapps中项目目录的“abc”目录下,如,D:\Program Files\apache-tomcat-8.0.53\webapps\FileService\abc\tst.jpg。
问题来了,当我在在浏览器中输入“http://192.168.1.100:8001/FileService/abc/tst.jpg”,过滤器有效,执行了doFilter方法,但是当我请求虚拟目录:“http://192.168.1.100:8001/FileService/pic/tst.jpg”中下的图片时,过滤器无效,图片加载成功,没有执行doFilter方法。
项目的web.xml中过滤器配置如下:
	<filter>
<filter-name>FileDownloadFilter</filter-name>
<filter-class>filter.FileFilter</filter-class>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>FileDownloadFilter</filter-name>
<url-pattern>/pic/*</url-pattern>
<url-pattern>/abc/*</url-pattern>

</filter-mapping>

下边是我tomcat中conf中server.xml修改的内容
      <Host name="localhost"  appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path="/FileService/pic" docBase="D:\pic" debug="0" reloadable="true"/>

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />

</Host>


疑惑了一上午,不知道是哪里配置错误还是过滤器本身就不会对虚拟路径请求起作用,请高人指点一二。
...全文
246 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧