今天在调试 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 的,这种方式还没研究,待将来用到再记录。