问题bug:
在使用SpringMVC来部署web项目时,在访问静态资源的时候,我们经常会出现404资源未找到的问题。
原因:
这是因为其中的DispatcherServlet会对静态资源进行拦截,导致了静态资源无法访问。
解决方案:
方案一、在web.xml中设置defaultServlet,注意这个配置需要DispatcherServlet拦截的前面,才能起到提前拦截的效果。
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.css</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.gif</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.jpg</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.png</url-pattern>
</servlet-mapping>
其中default是Tomcat的默认servlet名称,如果是其他是服务器可以去查查相关默认servlet名称。
方案二、在springmvc配置文件中配置resource
<mvc:resources mapping="/images/**" location="/images/" />
其中location是静态资源目录的路径,mapping是映射到ResourceHttpRequestHandler进行处理。
方案三、在SpringMVC为静态资源配置默认servlet处理器(这是我经常使用的方法)
<mvc:default-servlet-handler/>