今天记录下 SpringMVC 静态资源配置的情况 -- 虽然之前记住了,不过一段时间没管它就忘记了!!记忆差只能多记录一点了
1.静态资源位于WEB-INF下,如图:
2.web.xml中的配置
<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:/config/spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<async-supported>true</async-supported>
</servlet>
<servlet-mapping>
<servlet-name>SpringMVC</servlet-name>
<!-- 此处可以可以配置成*.do,对应struts的后缀习惯 -->
<url-pattern>/</url-pattern>
</servlet-mapping>
因为是/ ,所以全部都进行了拦截,当然也拦截了静态资源
3.spring-mvc.xml 中的配置 *关键的地方*
<!-- 默认的注解映射的支持 -->
<mvc:annotation-driven />
<!-- 静态资源访问 -->
<mvc:resources mapping="/images/**" location="/WEB-INF/images/" cache-period="31556926"/>
<mvc:resources mapping="/js/**" location="/WEB-INF/js/" cache-period="31556926"/>
<mvc:resources mapping="/css/**" location="/WEB-INF/css/" cache-period="31556926"/>
注意这里mapping的js/**表示 jsp页面需要的路径写法,location指这个写法对应的文件真正在的路径,具体看下面就明白了
4.jsp页面的路径选择
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<c:set var="ctx" value="${pageContext.request.contextPath}" />
<script src="${ctx}/js/jquery-2.1.0.js"></script>
这里的路径直接js/jqury-2.1.0.js 就会映射到 WEB-INF/js/jqury-2.1.0.js
这样配置就可以找到WEB-INF下的静态资源,\(^o^)/!