Spring MVC 3.0实战:基于协商的视图解析器解析
下载需积分: 9 | PPT格式 | 2.63MB |
更新于2024-08-17
| 68 浏览量 | 举报
"本文档是关于Spring MVC的实践指南,重点介绍了基于协商的视图解析器的配置和使用,以及Spring MVC的基本概念和框架结构。"
在Spring MVC中,视图解析器扮演着至关重要的角色,它们负责将控制器处理方法返回的逻辑视图名转化为实际的视图资源。基于协商的视图解析器(ContentNegotiatingViewResolver)是一种智能的视图解析策略,它可以根据多种因素来确定应该使用哪种视图技术来呈现响应,如用户代理的Accept头、URL路径扩展、请求参数等。
在提供的配置中,`ContentNegotiatingViewResolver`被设置为优先级最高的视图解析器(`order="0"`),并且默认内容类型被设定为`text/html`,这意味着如果其他条件不明确,系统将默认返回HTML视图。`ignoreAcceptHeader`属性被设置为`true`,表示忽略用户的Accept头信息,`favorPathExtension`设为`false`意味着不考虑URL路径扩展来决定视图类型,而`favorParameter`设为`true`表示会检查请求参数`content`来决定视图。
`mediaTypes`属性定义了系统支持的媒体类型映射,例如,`html`对应`text/html`,`xml`对应`application/xml`,`json`对应`application/json`。这允许系统根据客户端的偏好返回不同格式的数据。
`defaultViews`属性定义了一组默认视图,当没有更具体的匹配时使用。在这个例子中,我们有两个视图 bean:`MappingJacksonJsonView`用于处理JSON响应,`MarshallingView`则用于XML响应。`MappingJacksonJsonView`通过`renderedAttributes`属性指定了要序列化的模型属性,而`MarshallingView`使用`modelKey`和`marshaller-ref`属性来指定要进行XML序列化的模型对象和使用的marshaller。
接下来,`InternalResourceViewResolver`被配置为次级视图解析器,具有较高的顺序值(`order="100"`)。这个解析器主要用于处理JSP视图,它使用`JstlView`作为默认视图类,并通过`prefix`和`suffix`属性设置视图路径前缀和后缀,例如,视图名"user/register"会被解析为"/WEB-INF/views/user/register.jsp"。
Spring MVC框架的核心组件包括DispatcherServlet、HandlerMapping、HandlerAdapter、Handler、ModelAndView、ViewResolver和Model。DispatcherServlet作为前端控制器,接收HTTP请求并分发到相应的处理器。HandlerMapping负责映射请求到处理器方法,HandlerAdapter处理适配问题,使得不同的处理器可以被统一调用。Handler执行业务逻辑并返回ModelAndView对象,其中包含模型数据和视图名。ViewResolver解析视图名并返回实际的视图对象,最后Model和View共同完成视图渲染。
Spring MVC 3.0引入了许多新特性,如RESTful URL支持、更多的注解驱动、HTTP输入输出转换器、与数据转换、格式化和验证框架的集成,以及对静态资源的特殊处理。这些改进使得Spring MVC在处理Web应用时更加灵活和高效。
通过上述配置和解释,我们可以看到Spring MVC如何通过基于协商的视图解析器实现对不同格式响应的支持,以及整个框架如何协同工作以处理HTTP请求和呈现视图。
相关推荐










ServeRobotics
- 粉丝: 40
最新资源
- 浙江大学数学建模讲义要点解析
- Matlab教程:RBF网络在非线性函数逼近中的应用
- 流耘EXCEL财务软件2014.3.14极速版:小企业财务处理利器
- 交互式历史教育网站:一站解决一战疑问
- 高效报表打印工具:学习使用指南
- Vue指令v-click-outside实现元素外点击反应
- C语言程序设计课件精讲
- 全面解读Java最新版精品课程学习攻略
- Delphi开发的维修管理软件WX功能介绍
- 深入研究直流升压变换器动态响应特性及其模型
- 无if语句的纯函数版Conway生命游戏实现
- C# 开发的高仿记事本实现文本编辑与行列显示功能
- BUCK变换器的模糊逻辑控制与小信号分析
- Vue Flatpickr组件:轻松实现日期时间选择功能
- React示例教程:评论框实现与多语言服务器搭建
- ecshop2.7.3多供应商管理插件的核心功能与应用