Spring MVC 3.0实战:基于协商的视图解析器详解
需积分: 10 96 浏览量
更新于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应用程序。
2018-03-18 上传
701 浏览量
2014-02-13 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
四方怪
- 粉丝: 28
- 资源: 2万+
最新资源
- C语言数组操作:高度检查器编程实践
- 基于Swift开发的嘉定单车LBS iOS应用项目解析
- 钗头凤声乐表演的二度创作分析报告
- 分布式数据库特训营全套教程资料
- JavaScript开发者Robert Bindar的博客平台
- MATLAB投影寻踪代码教程及文件解压缩指南
- HTML5拖放实现的RPSLS游戏教程
- HT://Dig引擎接口,Ampoliros开源模块应用
- 全面探测服务器性能与PHP环境的iprober PHP探针v0.024
- 新版提醒应用v2:基于MongoDB的数据存储
- 《我的世界》东方大陆1.12.2材质包深度体验
- Hypercore Promisifier: JavaScript中的回调转换为Promise包装器
- 探索开源项目Artifice:Slyme脚本与技巧游戏
- Matlab机器人学习代码解析与笔记分享
- 查尔默斯大学计算物理作业HP2解析
- GitHub问题管理新工具:GIRA-crx插件介绍