Spring3 MVC注解:协商视图解析器与新特性概述

需积分: 10 1 下载量 20 浏览量 更新于2024-07-13 收藏 2.62MB PPT 举报
在Spring3 MVC框架中,协商视图解析器是一个重要的组件,它允许根据客户端发送的HTTP Accept头信息动态选择合适的视图渲染格式。这个配置示例展示了如何在Spring MVC应用中设置一个ContentNegotiatingViewResolver,以便支持HTML、XML和JSON等多种输出格式。 首先,`ContentNegotiatingViewResolver`是Spring MVC中的一个Bean,它具有`order`属性,用于定义解析器的执行顺序,`defaultContentType`则设置了默认的响应类型。`ignoreAcceptHeader`和`favorPathExtension`属性控制解析器是否忽略 Accept 头或优先考虑路径扩展名。`favorParameter`决定是否根据请求参数来确定媒体类型,`parameterName`则是请求参数的名称。 `mediaTypes`属性是一个Map,其中键值对表示不同的媒体类型及其对应的MIME类型。例如,如果客户端请求XML,`MarshallingView`将会被选中,`modelKey`用于指定数据模型的关键字,而`marshaller-ref`引用了一个XML Marshaller对象,用于将数据转换为XML格式。 `defaultViews`列表包含了当没有匹配的媒体类型时使用的视图,这里定义了两个默认视图:`MappingJacksonJsonView`用于处理JSON请求,`userList`属性指定要序列化的对象;`MarshallingView`处理XML请求,同样通过`modelKey`指定数据模型。 除了协商视图解析器,Spring MVC 3.0还引入了一些新特性,如支持REST风格的URL,注解驱动的控制器,HTTP输入输出转换器(HttpMessageConverter)与数据转换、格式化和验证框架的集成,以及对静态资源的特殊支持等。这些特性使得Spring MVC在处理不同类型的请求和响应格式时更加灵活,提高了开发效率。 在Spring MVC的实际应用中,控制器类通常使用`@Controller`注解来标记,如`com.baobaotao.web.UserController`,然后通过`@RequestMapping`注解来定义URL映射,如`"/user"`和`"/user/register"`,这些注解允许开发者指定控制器的行为和响应的逻辑视图名。 最后,Spring MVC的架构包括`DispatcherServlet`作为核心控制器,`HandlerMapping`负责找到处理请求的处理器,`HandlerAdapter`则负责调用处理器的方法并将结果传递给视图解析器。视图解析器如`InternalResourceViewResolver`和协商视图解析器共同确保了根据客户端请求动态选择并呈现视图。 总结来说,基于协商的视图解析器是Spring MVC 3.0的一个关键部分,它通过HTTP Accept头信息智能地选择并呈现响应的视图格式,配合新特性,提供了更好的请求处理灵活性和开发体验。