Spring MVC 3.0实战:基于协商的视图解析与REST支持

需积分: 16 17 下载量 68 浏览量 更新于2024-08-18 收藏 2.62MB PPT 举报
"本文主要介绍了Spring MVC 3.0中的基于协商的视图解析器的配置和使用,以及Spring MVC框架的基本概念、结构和新特性。通过示例展示了如何配置ContentNegotiatingViewResolver和InternalResourceViewResolver来处理不同的视图格式,如HTML、XML和JSON。" 在Spring MVC框架中,视图解析器是非常关键的组件,它们负责将控制器返回的逻辑视图名称转化为实际的视图资源。基于协商的视图解析器(ContentNegotiatingViewResolver)允许根据客户端的请求头或URL扩展名来选择最适合的视图格式。在给出的配置中,我们看到`ContentNegotiatingViewResolver`是如何被配置来处理不同类型的媒体类型,如`text/html`、`application/xml`和`application/json`。`defaultViews`属性定义了当没有明确的视图匹配时使用的默认视图,例如,使用`MappingJacksonJsonView`来处理JSON响应,而`MarshallingView`用于XML。 此外,配置中的`InternalResourceViewResolver`是一个标准的视图解析器,它用于处理JSP视图,通过前缀`"/WEB-INF/views/"`和后缀`".jsp"`来构建实际的视图路径。`order`属性用于设置解析器的优先级,较低的数字表示更高的优先级。 Spring MVC框架结构通常包括`DispatcherServlet`作为入口点,它负责调度请求到相应的处理器。`HandlerMapping`组件将请求映射到适当的处理器(Controller),`HandlerAdapter`则使得框架可以适配各种不同类型的处理器方法。控制器返回`ModelAndView`对象,包含了模型数据和视图信息。`ViewResolver`最后解析逻辑视图名并返回实际的视图。 Spring MVC 3.0引入了一些新特性,如支持RESTful风格的URL,增加了更多的注解以实现完全的注解驱动,引入了HTTP输入输出转换器(HttpMessageConverter)来处理不同格式的数据,与数据转换、格式化和验证框架无缝集成,提供静态资源处理,以及更灵活的控制器方法签名,使得控制器可以完全独立于Servlet API。 通过`@Controller`和`@RequestMapping`注解,我们可以轻松地创建和映射控制器。例如,`UserController`被标记为一个处理用户相关请求的控制器,其`register`方法通过`@RequestMapping`注解映射到 `/user/register` 的URL,返回的逻辑视图名 `user/register` 将由视图解析器进一步处理。 Spring MVC 3.0 提供了一个强大且灵活的架构来处理Web应用程序的请求和响应,其中基于协商的视图解析器是实现多格式响应的关键组件。通过理解这些概念和配置,开发者可以更好地设计和实现适应多种客户端需求的Web服务。