在項目開發中我們通常通過如下配置來完成所有web請求的處理:
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
這樣配置,默認情況下會攔截靜態資源,會導致靜態資源找不到,會出現類似下圖的錯誤
解決上面404的問題,有如下幾種方案:
方案一:
激活Tomcat的defaultServlet來處理靜態文件,該配置在tomcat的conf 下面的web.xml中,我們可以在項目的web.xml中加入如下代碼
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.css</url-pattern>
</servlet-mapping>
如果涉及多種靜態文件,寫多個即可
方案二: 在spring3.0.4以後版本提供了mvc:resources , 使用方法:
<mvc:annotation-driven/>
<mvc:resources mapping="/**/*.css" location="statics/css/"/>
方案三:使用<mvc:default-servlet-handler/>,配置如下:
<mvc:default-servlet-handler/>
方案四:默認請求加後綴,再去攔截,配置如下:
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/*.htm</url-pattern>
</servlet-mapping>