指定静态资源路径
当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所写)
相关推荐
总结来说,Spring MVC提供了多种方式来管理和优化静态资源的访问,包括自定义静态资源路径、缓存控制、避免与控制器冲突以及性能优化。通过灵活的配置,开发者可以根据项目需求来定制最佳的静态资源处理策略。
方案一是在拦截器中排除静态资源路径。在SpringMVC的配置文件中(通常是spring-mvc.xml),可以通过配置元素来定义一个或多个拦截器。在定义拦截器时,可以使用元素来指定不希望拦截器拦截的路径。这些路径包括静态...
- **统一资源路径**:推荐将所有静态资源放在一个特定的目录下(如`/resources/`),这样可以通过简单的映射(如上文所示)轻松地配置静态资源访问。 - **利用缓存机制**:为了进一步提高性能,可以利用浏览器缓存...
这段配置告诉SpringMVC将`/resources/**`的请求映射到指定的静态资源目录。 ```xml **" location="/resources/" /> ``` 这里,`mapping="/resources/**"`定义了URL模式,`location="/resources/"`指定了静态资源的...
这种方法的优点是配置清晰,可以直接在拦截器内部管理静态资源的排除,但缺点是需要手动列出所有静态资源类型和路径,当静态资源种类繁多时,配置会变得复杂。 ### 方案二:使用默认Servlet处理静态资源 通过`...
另一种方式是在Spring MVC的配置文件中使用`<mvc:resources>`标签来指定静态资源的路径和映射。虽然在提供的代码中这部分注释掉了,但正确的使用方式如下: ```xml **" location="/WEB-INF/css/"/> **" location="/...
2. springmvc-servlet.xml配置文件说明:这个配置文件中需要定义组件扫描、静态资源处理、注解驱动以及视图解析器等信息。 - 组件扫描(component-scan):指定SpringMVC需要管理的包路径,它会自动扫描这些路径...
从Spring 3.0.4版本开始,Spring MVC引入了`<mvc:resources>`标签,允许开发者明确地指定静态资源的映射和位置。例如: ```xml **" location="/images/" /> ``` 这段配置表示映射`/images/**`的所有请求到`/images...
例如,我们可以在`addResourceHandlers`方法中指定额外的静态资源路径: ```java @Configuration @EnableWebMvc public class WebConfig implements WebMvcConfigurer { @Override public void ...
为了确保静态资源能够正常访问,我们需要在 Spring MVC 的配置中明确指定它们的映射路径,如下所示: ```xml **" location="/static/resources" /> **" location="/static/css/" /> **" location="/static/images/...
在SpringMVC项目中,常见的目录结构包括`src/main/java`(存放源代码)、`src/main/resources`(存放配置文件和静态资源)、`src/main/webapp`(存放Web应用相关的文件,如HTML、CSS、JavaScript等)。 **单文件...
4. SpringMVC中的拦截器实现登录控制的流程:首先配置拦截器,指定需要拦截的URL路径和排除的URL路径(如登录页面和静态资源路径等)。拦截器的实现类中,preHandle方法中首先检查请求的URI是否在排除的URL列表中,...
- `WebContent`或`web`通常包含静态资源(如HTML、CSS、JavaScript)、WEB-INF目录(存放web.xml配置文件)以及部署相关的文件。 - `src`是源代码目录,一般分为`main/java`(存放Java源码)和`main/resources`...
- **静态资源处理**:SpringMVC可以通过配置静态资源处理器(如Spring的ResourceHttpRequestHandler)来处理CSS、JavaScript等静态资源。 #### 九、数据转换&数据格式化&数据校验 - **数据绑定**:SpringMVC支持...
当请求匹配到静态资源路径时,SpringMVC会自动处理并返回这些资源。 例如,如果你有一个名为style.css的CSS文件存放在`static/css`目录下,那么在HTML中引用它的方式是: ```html ``` SpringMVC会自动找到这个...
- **静态资源处理**:SpringMVC提供了一种简单的方式来映射静态资源的请求,通常在web.xml中配置DispatcherServlet的init-param属性,设置"dispatchOptionsRequest"为"true"。 通过上述内容的介绍,我们可以了解到...
- `application.properties`:配置文件中包含了服务器端口、环境选择、静态资源路径、模板引擎设置、数据源配置、连接池参数等。例如,关闭Thymeleaf缓存和启用,设置数据源连接信息等。 - `spring.profiles....
对于静态资源处理提供了特殊支持,保证了资源能够被正确地处理。控制器方法签名更加灵活,可以完全独立于Servlet API,这样可以更好地进行单元测试。 在具体实现上,通过@Controller注解,可以将一个普通的Java类...
一个典型的SSM整合后的项目文件结构通常包括以下几个部分:src/main/java(存放源代码),src/main/resources(存放配置文件),WEB-INF(存放web应用相关的配置文件,如web.xml),以及web目录(存放静态资源和...
6. **可选配置**:还可以配置拦截器、AOP、异常处理器、静态资源处理、国际化支持等高级特性,以进一步增强应用的功能和性能。 总的来说,SpringMVC通过灵活的配置和强大的功能,使得开发人员可以轻松地构建出高...