SpringMVC3:基于协商的视图解析与内容类型控制

需积分: 9 2 下载量 115 浏览量 更新于2024-08-18 收藏 2.62MB PPT 举报
本文主要介绍了SpringMVC3中的基于协商的视图解析器以及SpringMVC框架的基本概念、新特性和工作流程。 SpringMVC是Spring框架的一部分,它是一个轻量级的、模型-视图-控制器(MVC)架构,用于构建Web应用程序。在SpringMVC3中,引入了更多注解驱动的功能和增强的URL映射,以支持RESTful风格的Web服务。同时,它与数据转换、格式化和验证框架集成,提供了更高效的数据处理能力。 视图解析器在SpringMVC中扮演着重要角色,它们负责将逻辑视图名转换为实际的视图资源。在示例配置中,`ContentNegotiatingViewResolver`是一个基于内容协商的视图解析器,它可以根据请求的不同内容类型(如text/html, application/xml或application/json)来选择合适的视图。通过设置`mediaTypes`属性,我们可以定义不同扩展名所对应的内容类型。在这个例子中,`.html`对应`text/html`,`.xml`对应`application/xml`,`.json`对应`application/json`。`defaultViews`属性则定义了当没有特定的视图匹配时使用的默认视图,例如`MappingJacksonJsonView`用于处理JSON输出,而`MarshallingView`则用于XML的序列化。 此外,配置中的`InternalResourceViewResolver`是另一个常见的视图解析器,它将逻辑视图名解析为JSP页面,前缀是`/WEB-INF/views/`,后缀是`.jsp`。这意味着如果控制器返回逻辑视图名`user/register`,那么实际寻找的JSP页面将是`/WEB-INF/views/user/register.jsp`。 在SpringMVC中,`@Controller`注解用于标记一个类作为控制器,`@RequestMapping`用于映射控制器处理的URL路径。例如,`@RequestMapping("/user")`将整个`UserController`类映射到 `/user` 前缀的URL,而`@RequestMapping("/register")`将`register()`方法映射到 `/user/register` 的URL。当请求到达时,`DispatcherServlet`会根据配置的`HandlerMapping`找到合适的处理器方法,并使用`HandlerAdapter`来执行该方法。最后,方法返回的逻辑视图名会被视图解析器转换为实际的视图进行渲染。 SpringMVC3提供了强大的视图解析机制和注解驱动的控制器,使得开发者可以轻松地构建和维护复杂的Web应用程序。其支持RESTful风格的URL,与多种数据格式的集成,以及与Servlet API的解耦,都极大地提升了开发效率和代码的可维护性。