`
234390216
  • 浏览: 10232259 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
A5ee55b9-a463-3d09-9c78-0c0cf33198cd
Oracle基础
浏览量:462597
Ad26f909-6440-35a9-b4e9-9aea825bd38e
springMVC介绍
浏览量:1775446
Ce363057-ae4d-3ee1-bb46-e7b51a722a4b
Mybatis简介
浏览量:1398309
Bdeb91ad-cf8a-3fe9-942a-3710073b4000
Spring整合JMS
浏览量:394994
5cbbde67-7cd5-313c-95c2-4185389601e7
Ehcache简介
浏览量:679961
Cc1c0708-ccc2-3d20-ba47-d40e04440682
Cas简介
浏览量:530847
51592fc3-854c-34f4-9eff-cb82d993ab3a
Spring Securi...
浏览量:1183872
23e1c30e-ef8c-3702-aa3c-e83277ffca91
Spring基础知识
浏览量:467783
4af1c81c-eb9d-365f-b759-07685a32156e
Spring Aop介绍
浏览量:151371
2f926891-9e7a-3ce2-a074-3acb2aaf2584
JAXB简介
浏览量:68128
社区版块
存档分类
最新评论

SpringMVC之指定静态资源路径

阅读更多

指定静态资源路径

当SpringMVC的DispatcherServlet配置的映射路径是/时,所有的请求都将被SpringMVC拦截,如果我们想访问某个路径下的静态资源其实是不能直接访问的。基于这种情况,SpringMVC提供了<mvc:resources/>配置来告诉SpringMVC,哪些请求是针对静态资源的。它需要指定两个参数,location用来指定静态资源对应的实际路径,可以通过classpath:META-INF/static/这种方式指定类路径下的资源,如果有多个路径,可以通过英文逗号分隔。mapping用来指定哪些请求会被认为是在请求静态资源。下面的配置就指定了格式满足/static/**的请求路径被认为是在请求静态资源,会相应的到/static/路径下寻找对应文件。所以当请求路径是/static/css/default.css时会响应/static/css目录下的default.css文件。

<mvc:resources location="/static/" mapping="/static/**" />

实际上当SpringMVC的DispatcherServlet配置的映射路径是/时,所有的请求都将被SpringMVC拦截。如果配置了<mvc:default-servlet-handler/>,则当一个请求路径SpringMVC找不到处理器时将会把它交给容器本身处理,也就说这种情况下是可以正常访问静态资源的。

静态资源缓存

<mvc:resources/>还可以通过cache-period属性指定静态资源的缓存时间,单位是秒。这样浏览器在指定的cache-period时间内需要访问静态资源时会优先使用浏览器本地缓存的内容。

有的时候我们希望能强制更新浏览器缓存的内容,这个时候我们可以给静态资源加入一个版本的概念。大概意思是在URL中加入一个版本,每次有更新的时候都更新版本号,这样每次更新后请求的静态资源路径都不一样,浏览器也就会重新从服务端获取静态资源进行缓存了。SpringMVC对此也提供了支持,我们可以通过<mvc:fixed-version-strategy/>来定义一个固定的版本号,这样我们的请求路径需要重写为加上版本号,比如按照之前静态资源的配置,原本请求路径是/static/css/common.css,加上版本号之后就是/static/1.0/css/common.css,因为我们配置的请求路径映射是/static/**,即只需要在**前加上版本号作为一级目录。SpringMVC接收到请求/static/1.0/css/common.css会自动提取出版本号1.0,并把请求版本号与当前版本号比较,能匹配则响应去掉版本号的内容,否则就是404了。

    <mvc:resources location="/static/" mapping="/static/**" cache-period="600">
        <!-- 指定静态资源缓存,有版本更新时通过版本号来更新 -->
        <mvc:resource-chain resource-cache="true">
            <mvc:resolvers>
                <mvc:version-resolver>
                    <mvc:fixed-version-strategy version="1.0" patterns="/**" />
                </mvc:version-resolver>
            </mvc:resolvers>
        </mvc:resource-chain>
    </mvc:resources>

(注:本文是基于Spring4.1.0所写)

分享到:
评论

相关推荐

    SpringMVC访问静态资源

    总结来说,Spring MVC提供了多种方式来管理和优化静态资源的访问,包括自定义静态资源路径、缓存控制、避免与控制器冲突以及性能优化。通过灵活的配置,开发者可以根据项目需求来定制最佳的静态资源处理策略。

    防止SpringMVC拦截器拦截js等静态资源文件的解决方法

    方案一是在拦截器中排除静态资源路径。在SpringMVC的配置文件中(通常是spring-mvc.xml),可以通过配置元素来定义一个或多个拦截器。在定义拦截器时,可以使用元素来指定不希望拦截器拦截的路径。这些路径包括静态...

    springmvc静态资源访问

    - **统一资源路径**:推荐将所有静态资源放在一个特定的目录下(如`/resources/`),这样可以通过简单的映射(如上文所示)轻松地配置静态资源访问。 - **利用缓存机制**:为了进一步提高性能,可以利用浏览器缓存...

    SpringMVC访问静态资源的方法

    这段配置告诉SpringMVC将`/resources/**`的请求映射到指定的静态资源目录。 ```xml **" location="/resources/" /&gt; ``` 这里,`mapping="/resources/**"`定义了URL模式,`location="/resources/"`指定了静态资源的...

    SpringMVC 拦截器不拦截静态资源的三种处理方式方法

    这种方法的优点是配置清晰,可以直接在拦截器内部管理静态资源的排除,但缺点是需要手动列出所有静态资源类型和路径,当静态资源种类繁多时,配置会变得复杂。 ### 方案二:使用默认Servlet处理静态资源 通过`...

    详解SpringMVC中设置静态资源不被拦截的问题

    另一种方式是在Spring MVC的配置文件中使用`&lt;mvc:resources&gt;`标签来指定静态资源的路径和映射。虽然在提供的代码中这部分注释掉了,但正确的使用方式如下: ```xml **" location="/WEB-INF/css/"/&gt; **" location="/...

    springMVC笔记

    2. springmvc-servlet.xml配置文件说明:这个配置文件中需要定义组件扫描、静态资源处理、注解驱动以及视图解析器等信息。 - 组件扫描(component-scan):指定SpringMVC需要管理的包路径,它会自动扫描这些路径...

    SpringMVC访问静态资源的三种方式小结

    从Spring 3.0.4版本开始,Spring MVC引入了`&lt;mvc:resources&gt;`标签,允许开发者明确地指定静态资源的映射和位置。例如: ```xml **" location="/images/" /&gt; ``` 这段配置表示映射`/images/**`的所有请求到`/images...

    springMVC静态资源

    例如,我们可以在`addResourceHandlers`方法中指定额外的静态资源路径: ```java @Configuration @EnableWebMvc public class WebConfig implements WebMvcConfigurer { @Override public void ...

    详解springmvc拦截器拦截静态资源

    为了确保静态资源能够正常访问,我们需要在 Spring MVC 的配置中明确指定它们的映射路径,如下所示: ```xml **" location="/static/resources" /&gt; **" location="/static/css/" /&gt; **" location="/static/images/...

    IDEA社区版编写的SpringMVC小项目

    在SpringMVC项目中,常见的目录结构包括`src/main/java`(存放源代码)、`src/main/resources`(存放配置文件和静态资源)、`src/main/webapp`(存放Web应用相关的文件,如HTML、CSS、JavaScript等)。 **单文件...

    SpringMVC配置拦截器实现登录控制的方法

    4. SpringMVC中的拦截器实现登录控制的流程:首先配置拦截器,指定需要拦截的URL路径和排除的URL路径(如登录页面和静态资源路径等)。拦截器的实现类中,preHandle方法中首先检查请求的URI是否在排除的URL列表中,...

    SpringMVC入门很简单之URL映射规则

    - `WebContent`或`web`通常包含静态资源(如HTML、CSS、JavaScript)、WEB-INF目录(存放web.xml配置文件)以及部署相关的文件。 - `src`是源代码目录,一般分为`main/java`(存放Java源码)和`main/resources`...

    SpringMVC4教程-超权威--超详细

    - **静态资源处理**:SpringMVC可以通过配置静态资源处理器(如Spring的ResourceHttpRequestHandler)来处理CSS、JavaScript等静态资源。 #### 九、数据转换&数据格式化&数据校验 - **数据绑定**:SpringMVC支持...

    SpringMVC(七)RESTful案例

    当请求匹配到静态资源路径时,SpringMVC会自动处理并返回这些资源。 例如,如果你有一个名为style.css的CSS文件存放在`static/css`目录下,那么在HTML中引用它的方式是: ```html ``` SpringMVC会自动找到这个...

    14-SpringMVC.pdf

    - **静态资源处理**:SpringMVC提供了一种简单的方式来映射静态资源的请求,通常在web.xml中配置DispatcherServlet的init-param属性,设置"dispatchOptionsRequest"为"true"。 通过上述内容的介绍,我们可以了解到...

    springmvc转为springboot--干货.docx

    - `application.properties`:配置文件中包含了服务器端口、环境选择、静态资源路径、模板引擎设置、数据源配置、连接池参数等。例如,关闭Thymeleaf缓存和启用,设置数据源连接信息等。 - `spring.profiles....

    springMVC实战指南高清PDF

    对于静态资源处理提供了特殊支持,保证了资源能够被正确地处理。控制器方法签名更加灵活,可以完全独立于Servlet API,这样可以更好地进行单元测试。 在具体实现上,通过@Controller注解,可以将一个普通的Java类...

    spring+springMVC+Mybatis框架整合

    一个典型的SSM整合后的项目文件结构通常包括以下几个部分:src/main/java(存放源代码),src/main/resources(存放配置文件),WEB-INF(存放web应用相关的配置文件,如web.xml),以及web目录(存放静态资源和...

    SpringMVC配置

    6. **可选配置**:还可以配置拦截器、AOP、异常处理器、静态资源处理、国际化支持等高级特性,以进一步增强应用的功能和性能。 总的来说,SpringMVC通过灵活的配置和强大的功能,使得开发人员可以轻松地构建出高...

Global site tag (gtag.js) - Google Analytics