SpringMVC3.0实战:基于协商的视图解析与注解
需积分: 0 130 浏览量
更新于2024-08-18
收藏 2.62MB PPT 举报
"本文主要介绍了Spring MVC中的基于协商的视图解析器,以及Spring MVC的基本概念、框架结构和控制器的注解使用。"
在Spring MVC框架中,视图解析器是核心组件之一,负责根据请求的上下文和配置来决定响应的视图。基于协商的视图解析器ContentNegotiatingViewResolver就是其中一种,它允许系统通过多种方式来确定应返回哪种类型的视图。在提供的配置中,ContentNegotiatingViewResolver被设置为首选解析器,具有最高的`order`值0,它的主要属性包括:
1. `defaultContentType`: 设置默认的内容类型,这里是`text/html`。
2. `ignoreAcceptHeader`: 是否忽略Accept头信息,默认为`true`,意味着不依赖浏览器发送的Accept头来判断响应类型。
3. `favorPathExtension`: 是否优先考虑URL路径扩展来决定视图类型,设为`false`表示不优先考虑。
4. `favorParameter`: 是否优先使用请求参数来判断视图类型,设为`true`表示启用。
5. `parameterName`: 指定用于决定视图类型的请求参数名,这里是`content`。
6. `mediaTypes`: 配置了可接受的媒体类型,例如`html`对应`text/html`,`xml`对应`application/xml`,`json`对应`application/json`。
7. `defaultViews`: 定义了一组默认视图,包括`MappingJacksonJsonView`用于JSON输出,`MarshallingView`用于XML输出。
示例中的配置表明,系统会根据请求的URL、参数或Accept头来判断应该返回HTML、XML还是JSON格式的数据。如果请求URL带有扩展名如`.json`,则返回JSON视图;如果URL包含特定参数,如`?content=json`,也会返回JSON视图。如果没有这些指示,将返回默认的HTML视图。
Spring MVC是一个轻量级的MVC框架,它简化了Web应用程序的开发。框架的核心组件`DispatcherServlet`负责调度请求,通过`HandlerMapping`和`HandlerAdapter`找到并调用合适的处理器(Controller)。Controller通常通过注解如`@Controller`和`@RequestMapping`来标识和配置。`@RequestMapping`可以用来指定控制器处理的URL路径,而`@RequestMapping`内的方法则定义了具体的请求映射。
Spring MVC 3.0引入了许多新特性,包括支持RESTful风格的URL、更多的注解驱动、HTTP输入输出转换器、与数据转换、格式化、验证框架的集成、静态资源处理优化,以及与Servlet API的解耦。这些改进增强了框架的灵活性和易用性。
在示例代码中,`UserController`通过`@Controller`注解标记为一个处理器,`@RequestMapping("user")`注解表明该控制器处理所有以"user"开头的URL。`register`方法通过`@RequestMapping(value = "/register")`注解,处理`/user/register`的请求,返回逻辑视图名`user/register`,这个名称将由视图解析器转换为实际的视图,如JSP页面。
Spring MVC的基于协商的视图解析器提供了灵活的方式,可以根据客户端的需求动态地选择合适的视图格式,而Spring MVC框架本身则提供了强大的功能和简洁的编程模型,便于开发者构建高性能的Web应用。
2016-09-20 上传
2018-07-05 上传
2017-12-12 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
杜浩明
- 粉丝: 14
- 资源: 2万+
最新资源
- 变压器点巡检管理系统毕业设计(全套资料)C#WinForm含源码和论文
- diagrams-and-images-in-doxygen:Doxygen中的图表和图像
- UnderstandingJS:尝试学习 JavaScript
- simon页面URL一键提取器,获取网站的URL连接,进行提交
- JAVA网上拍卖系统的设计与实现(源代码+论文).rar
- P2P_socket编程_
- 行业文档-设计装置-用于日光温室的蓄热式墙体.zip
- OpenBSDTorrents:我用于为openbsd.somedomain.net创建OpenBSD Torrent的脚本
- Python库 | deepmultilingualpunctuation-1.0.0.tar.gz
- OctoPrint-WebcamIframe
- 基于Vue的简易旅游网站设计源码
- packer-kali:Packer 的东西来构建 Kali 1.0.9 vagrant box
- Bootloader示例代码
- exemploPortifolio:开发人员组合
- PenguinSound-开源
- 基于Java的两个通用安全模块的设计与实现.rar