Spring MVC配置静态资源
如果觉得写的还可以,点个赞支持一下笔者呗!你的点赞和关注会让我更快更新哦。笔者会持续更新关于Java和大数据有关的文章
< mvc:default-servlet-handler />标签和< mvc:resources />标签这两个标签配置都可以实现静态资源的映射,我们可以根据自身的需求自行选择。
在Spring MVC框架中,针对静态资源的请求处理除了可以配置< mvc:default-servlet-handler />标签,通过容器来处理以外,还可以使用< mvc:resources />标签,在框架层面来处理。
< mvc:default-servlet-handler />的配置
Spring MVC 在全局配置文件中提供了一个mvc:default-servlet-handler/标签。在 WEB 容器启动的时候会在上下文中定义一个 DefaultServletHttpRequestHandler,它会对DispatcherServlet的请求进行处理,如果该请求已经作了映射,那么会接着交给后台对应的处理程序,如果没有作映射,就交给 WEB 应用服务器默认的 Servlet 处理,从而找到对应的静态资源,只有再找不到资源时才会报错。
<mvc:default-servlet-handler/>
< mvc:resources />的配置
传统Web容器的静态资源只能放在Web容器的根路径下,完全打破了这个限制。
从Spring MVC的XML Schema文件说明中可以知道,通过< mvc:resources />标签的配置可以使在Spring MVC框架中,配置一个Handler来处理静态资源,例如:图片,JS,CSS等文件,并通过配置Cache相关的Headers来使浏览器能够更有效的进行加载。同时,该配置允许将静态资源放在任何Spring MVC框架能够读取到的路径下。
< mvc:resources />主要有以下配置:
属性 |
说明 |
location |
该属性用于设置需要访问的本地静态资源文件的路径。 |
mapping |
匹配静态资源全路径,其中“/**”表示文件夹及其子文文件夹下的某个具体文件。 |
举个例子:
在springMVC-servlet中添加如下配置
<mvc:resourceslocation="/,classpath:/META-INF/publicResources/"mapping="/resources/**"/>
以上配置将Web根路径"/"及类路径下 /META-INF/publicResources/ 的目录映射为/resources路径。假设Web根路径下拥有images、js这两个资源目录,在images下面有bg.gif图片,在js下面有test.js文件,则可以通过 /resources/images/bg.gif 和 /resources/js/test.js 访问这二个静态资源。
上面配置中mapping配置请求路径的规则,location表示查找文件的路径配置,请求路径如果符合mapping的配置规则,将不会被SpringMVC前端核心控制器过滤,会直接按照location所指定的路径查找对应的文件。