Spring MVC 3.0实战:静态资源处理与缓存控制

需积分: 4 32 下载量 162 浏览量 更新于2024-08-23 收藏 1.64MB PPT 举报
"陈雄华的Spring MVC 3.0实战指南中提到,允许利用浏览器缓存静态资源,但需要注意可能导致的同步问题。通过配置`<mvc:default-servlet-handler/>`和`<mvc:resources>`,可以设置静态资源的缓存期限。同时,示例代码展示了如何自定义`ResourcePathExposer`类来初始化资源路径,并将其与Spring MVC整合,以处理版本控制的静态资源,如JavaScript文件。" 在Spring MVC中,静态资源的管理是一个重要的方面,特别是在构建Web应用程序时。通过使用`<mvc:default-servlet-handler/>`,我们可以让Spring MVC自动处理默认的Servlet,这通常用于服务静态内容,如HTML、CSS、JavaScript等。这种方式允许我们利用浏览器的缓存机制,提高页面加载速度,但同时也可能因缓存不更新而导致用户获取到的是旧版本的资源,尤其是在开发过程中需要频繁更新静态资源时。 为了控制静态资源的缓存时间,可以使用`<mvc:resources>`元素。在提供的代码片段中,`mapping`属性指定了映射的URL模式,`location`属性定义了资源的根路径,而`cache-period`属性则设定了资源的缓存时间,单位为秒。在这里,`cache-period="31536000"`表示资源将在一年后过期,浏览器会在这一年期间使用缓存的版本,除非手动清空缓存。 此外,`ResourcePathExposer`类是自定义的一个实现`ServletContextAware`接口的bean,它在初始化时确定了一个带有版本号的资源根路径。这样做是为了实现资源版本控制,当有新的静态资源发布时,可以通过改变版本号强制浏览器获取最新的资源,而不是使用缓存中的旧版本。`getServletContext().setAttribute()`方法用于将资源根路径设置为一个全局属性,方便在JSP中引用。 Spring MVC的控制器和请求映射是通过`@Controller`和`@RequestMapping`注解实现的。`@Controller`注解标记一个类作为处理HTTP请求的控制器,而`@RequestMapping`注解用于指定控制器处理的URL路径。在示例的`UserController`中,`@RequestMapping("user")`将整个类映射到"/user"路径,然后`@RequestMapping(value = "/register")`将`register()`方法映射到"/user/register",返回逻辑视图名,进一步通过视图解析器解析为实际的视图。 在Spring MVC的架构中,`DispatcherServlet`作为前端控制器,负责调度请求到合适的处理器。`HandlerMapping`负责映射请求到处理器,`HandlerAdapter`处理适配不同的处理器类型。`ModelAndView`对象包含了处理结果的模型数据和视图信息,`ViewResolver`负责解析视图名称并返回实际的视图对象。整个框架的设计使得开发者可以专注于业务逻辑,而无需过多关注底层的HTTP交互和视图渲染细节。 Spring MVC 3.0引入的新特性包括支持RESTful风格的URL,更多注解驱动的选项,HTTP输入输出转换器,以及与数据转换、格式化和验证框架的集成,增强了对静态资源的处理能力,使得开发更高效,应用更健壮。