Spring MVC教程:基于协商的视图解析与注解控制

需积分: 10 2 下载量 95 浏览量 更新于2024-08-18 收藏 2.62MB PPT 举报
"这篇教程主要介绍了Spring3 MVC中的基于协商的视图解析器,并通过一个配置示例展示了如何设置ContentNegotiatingViewResolver,以及如何使用InternalResourceViewResolver。此外,还简要提及了SpringMVC框架的结构、注解驱动的控制器以及新特性。" 在Spring3 MVC中,视图解析器扮演着至关重要的角色,它负责根据请求的上下文信息将处理结果转化为合适的视图。基于协商的视图解析器ContentNegotiatingViewResolver允许系统根据多种标准,如请求头、路径扩展名、参数等,来决定呈现哪种类型的视图。在给定的配置中,我们看到ContentNegotiatingViewResolver被配置为优先处理路径扩展名,而不是忽略或依赖`Accept`头。它定义了媒体类型映射,支持HTML、XML和JSON三种格式,同时配置了两个默认视图:MappingJacksonJsonView用于处理JSON响应,而MarshallingView则用于XML。 `MappingJacksonJsonView`是Spring提供的一个视图类,它能够将Java对象转换为JSON格式,这里的`renderedAttributes="userList"`表明了将在视图渲染时使用`userList`属性。另一方面,`MarshallingView`与`xmlMarshaller`关联,用于XML序列化,`modelKey="userList"`表示模型中的`userList`键值将被序列化。 `InternalResourceViewResolver`是另一个常用的视图解析器,它主要用于处理JSP视图。在这里,它的顺序设置为100,意味着在ContentNegotiatingViewResolver之后执行。`prefix="/WEB-INF/views/"`和`suffix=".jsp"`定义了视图文件的路径前缀和后缀。 SpringMVC的注解驱动使得控制器方法的定义更为简洁。例如,`@Controller`和`@RequestMapping`注解可以将一个类标记为处理特定URL的控制器,而`@RequestMapping`注解可以进一步指定方法处理的URL。`@RequestMapping(value = "/register")`表示`register()`方法将处理以"/user/register"为路径的请求,返回的逻辑视图名`"user/register"`会被视图解析器转换为实际的视图路径。 SpringMVC 3.0的新特性包括对RESTful风格URL的支持,更多的注解,HTTP输入输出转换器,与数据转换、格式化和验证框架的集成,对静态资源的特殊处理,以及与Servlet API的解耦。这些改进极大地增强了框架的灵活性和易用性。 整个SpringMVC框架的核心组件是DispatcherServlet,它作为前端控制器,负责调度请求到相应的处理器。HandlerMapping和HandlerAdapter分别完成映射请求到处理器和适配处理器方法的任务,ModelAndView对象包含了模型数据和视图信息,而ViewResolver则负责解析逻辑视图名到实际视图。 这个教程涵盖了Spring3 MVC的基础知识,包括视图解析器的配置、注解驱动的控制器以及框架的主要组件和新特性,对于理解SpringMVC的工作原理和实践应用非常有帮助。