访问 WEB-INF 下的静态资源

今天在调试 Spring MVC 程序时,发现页面无法正常加载 js 文件。经查,是因为 Spring MVC 的资源访问限制的问题,它默认把页面文件放到 WEB-INF 下,如果要访问其中的静态资源(js, images, css 等),需要配置。以下具体说明:

按 Spring MVC 的在 web.xml 默认设置:

<servlet-mapping>
    <servlet-name>mvc-dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

会拦截所有访问请求,对资源文件的访问也不例外,需要配置,具体是在 mvc-dispatcher-servlet.xml 中添加如下内容:

<mvc:annotation-driven/>
<mvc:resources location="/WEB-INF/jsp/js/" mapping="/js/**" />

上面第一句有的应用已经加了,就不用了。

第二句必须有,mapping 的值,带了两个星号。

如果是在 ItelliJ IDEA 中添加的,IDE 会自动找到需要添加的名字空间。

除了这种方式配置,还有一种结合 Spring security 的,这种方式还没研究,待将来用到再记录。