分两种情况:SpringMVC拦截静态资源和SpringMVC不拦截静态资源
一:SpringMVC不拦截静态资源,即DispatcherServlet配置拦截*.do或*.action之类的。
(1)只能将静态资源文件放到WEB-INF外,要不然无法在页面文件中引用到静态资源文件。具体原因查看《对JavaWeb项目中WEB-INF目录的理解》
(2)页面文件即可放在WEB-INF外,也可放在WEB-INF里,这对引用静态资源没有影响;只需要正确配置视图解析器中前缀路径即可。如下:
(3)在Controller渲染出来的jsp页面中引用静态资源文件时,路径如下:
二:SpringMVC拦截静态资源,即DispatcherServlet配置拦截"/"。
(1)可以将静态资源放到WEB-INF里,也可以将静态资源放到WEB-INF外;由于SpringMVC拦截了静态资源,所以无论静态资源放在哪里,都要经过SpringMVC来进一步处理,即使用<mvc:resources />处理;所以只需要正确配置<mvc:resources />即可。不了解<mvc:resources/>可以查看《SpringMVC对静态资源的处理》
如果将静态资源放在WEB-INF外,则还可以使用《SpringMVC对静态资源的处理》中的方案一和方案三来处理。
(2)页面文件即可放在WEB-INF外,也可放在WEB-INF里,这对引用静态资源没有影响;前面已经讲述过了。
(3)在Controller渲染出来的jsp页面中引用静态资源文件时,具体路径要配合<mvc:resources />中的mapping属性,具体路径示例如下: