Spring MVC 3.0实战:基于协商的视图解析器详解

需积分: 10 3 下载量 152 浏览量 更新于2024-08-17 收藏 2.62MB PPT 举报
本文档是关于Spring MVC 3.0实战的指南,主要讲解了Spring MVC框架的基本概念、新特性和工作流程,并通过实例展示了如何配置和使用基于协商的视图解析器。 在Spring MVC中,视图解析器是框架核心组件之一,它负责根据控制器返回的逻辑视图名来确定实际的视图。基于协商的视图解析器(ContentNegotiatingViewResolver)是一种智能的视图解析策略,可以根据多种因素来决定应返回哪种类型的内容,例如用户代理、请求参数或文件扩展名。 配置中,`ContentNegotiatingViewResolver` 的配置项包括: - `order`:设置解析器的优先级,数值越小优先级越高。 - `defaultContentType`:默认的内容类型,如果无法协商到其他类型,将返回此类型。 - `ignoreAcceptHeader`:是否忽略`Accept`头信息,如果为`true`,则不考虑浏览器的接受类型。 - `favorPathExtension`:是否优先考虑URL路径扩展来判断内容类型。 - `favorParameter`:是否优先考虑请求参数来判断内容类型,`parameterName`指定了参数名。 - `mediaTypes`:定义了不同键(如html、xml、json)与对应的内容类型映射。 - `defaultViews`:配置了一系列默认视图,如`MappingJacksonJsonView`用于处理JSON数据,`MarshallingView`用于XML数据。 示例中的配置表明,当请求到达时,Spring MVC会尝试通过URL路径、请求参数或`Accept`头来协商内容类型。默认视图列表包含了JSON和XML的处理方式,分别对应不同的数据模型。如果请求URL为`/user/showUserListMix`,且有适当的请求参数或路径扩展,ContentNegotiatingViewResolver将根据配置决定返回HTML、XML还是JSON格式的数据。 Spring MVC 3.0的新特性包括: 1. 支持RESTful风格的URL,使得URL更符合资源定位原则。 2. 添加了更多的注解,可以实现完全注解驱动的开发。 3. 引入了HTTP输入输出转换器(HttpMessageConverter),便于处理各种类型的HTTP请求和响应。 4. 集成了数据转换、格式化和验证框架,提供了更强大的数据处理能力。 5. 对静态资源处理提供了特殊支持,使得静态文件如CSS、JavaScript等的处理更方便。 6. 控制器方法签名更加灵活,可以完全独立于Servlet API,提高代码的可维护性。 Spring MVC的框架结构由DispatcherServlet、HandlerMapping、HandlerAdapter、Handler、ViewResolver和View等组成。DispatcherServlet作为前端控制器,接收请求并分发给相应的处理器。HandlerMapping负责将请求映射到处理器,HandlerAdapter处理控制器的适配问题,Handler是业务逻辑的执行者,ViewResolver解析逻辑视图名,View则是实际展示内容的部分。 在具体实践中,如文档所示,可以通过`@Controller`和`@RequestMapping`注解将普通类转化为处理器,然后通过`@RequestMapping`的value属性指定处理的URL路径。控制器方法返回的逻辑视图名,如"register",会被视图解析器进一步转换为实际的视图,如JSP、XML或PDF。 总结来说,基于协商的视图解析器是Spring MVC中一种灵活的内容呈现机制,能够根据多种条件确定最佳的视图呈现方式。结合Spring MVC的其他特性,可以构建出高效、可扩展的Web应用程序。