SSM项目静态资源访问报404访问不到解决办法
原因:
如果在web.xml中有对spring的DispatcherServlet请求url映射有如下配置
<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:springmvc-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
< servlet-mapping >中的< url-pattern >/</ url-pattern >所有的请求都会被spring mvc的DispatcherServlet截获拦截,这时静态资源无法的访问
解决:
1 .设置静态资源不过滤
适合 spring3.0.5以上版本
在spring-mvc的配置文件设置
<!-- 设置静态资源不过滤 -->
<mvc:default-servlet-handler />
通常Web应用服务器默认的Servlet名称为"default",因此DefaultServletHttpRequestHandler可以找到它;若所有Web应用服务器的默认Servlet名称不为"default",则需通过default-servlet-name属性指定,格式如下:
< mvc:default-servlet-handler default-servlet-name=“Web服务器使用的Servlet名称” />
2 .设置对静态资源的访问
在spring-mvc的配置文件设置
2-1
静态资源处于WEB-INF目录下:
文件目录如下:
<!-- 对静态资源的访问 -->
<mvc:resources mapping="/css/**" location="/WEB-INF/css/"/>
<mvc:resources mapping="/simditor/**" location="/WEB-INF/simditor/"/>
<mvc:resources mapping="/fonts/**" location="/WEB-INF/fonts/"/>
<mvc:resources mapping="/html/**" location="/WEB-INF/html/"/>
<mvc:resources mapping="/js/**" location="/WEB-INF/js/"/>
<mvc:resources mapping="/images/**" location="/WEB-INF/images/"/>
<mvc:resources mapping="/assets/**" location="/WEB-INF/assets/"/>
<mvc:resources mapping="/froala_editor/**" location="/WEB-INF/froala_editor/"/>
2-2
静态资源处于webapp目录下:
文件目录如下:
<!-- 对静态资源的访问 -->
<mvc:resources mapping="/css/**" location="/css/"/>
<mvc:resources mapping="/images/**" location="/images/"/>
<mvc:resources mapping="/js/**" location="/js/"/>
<mvc:resources mapping="/lib/**" location="/lib/"/>
<mvc:resources mapping="/data/**" location="/data/"/>
<mvc:resources mapping="/pages/**" location="/pages/"/>
location的位置是从webapp文件夹下开始,故css的位置为webapp/css
3 .一一配置静态资源
在web.xml里添加如下的配置
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.css</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>*.jpg</url-pattern>
</servlet-mapping>
该方法有缺点,有多少种静态资源都需要一一配置