最近在做一个Struts2框架的简单项目,但是发现图片、css、js等静态资源均无法访问,且排除了路径问题,最后发现是Struts2框架的过滤器拦截了所有请求,导致静态资源无法访问。
web.xml代码:
<display-name>DBDesign</display-name>
<welcome-file-list>
<welcome-file>/login.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
<url-pattern>/*</url-pattern>
代表拦截所有请求,即静态资源也被拦截了。
解决办法
打开struts.xml文件,在头部<struts>
标签下添加如下代码:
<constant name="struts.action.excludePattern" value="/static/.*?" />
<!-- /static 为存放静态资源的路径,意为不拦截对此文件夹下文件的请求 -->
现在问题就可以解决了。
如果是只有图片不能显示,那可能是路径中带有中文,或者图片名是中文,可以改为英文或者修改tomcat配置,建议修改图片名,路径采用相对路径。