Spring MVC 3.0 视图解析器详解 - InternalResourceViewResolver 到 ContentN...

需积分: 3 16 下载量 49 浏览量 更新于2024-08-18 收藏 2.62MB PPT 举报
"本文主要介绍了Spring MVC中的视图解析器类型,包括InternalResourceViewResolver、FreeMarkerViewResolver、BeanNameViewResolver、XmlViewResolver等,并特别讲解了Spring 3.0新增的ContentNegotiatingViewResolver,这是一种基于内容协商的视图解析器,用于根据请求的MIME类型选择合适的视图解析器。此外,还提到了Spring MVC框架的基本结构和注解驱动的控制器示例。" 在Spring MVC中,视图解析器是连接控制器和实际视图(如JSP、XML或PDF)的关键组件。它们负责将控制器返回的逻辑视图名转化为实际的资源路径。以下是一些常见的视图解析器类型: 1. **InternalResourceViewResolver**:这是最常用的视图解析器,它将逻辑视图名转化为实际的JSP页面路径。例如,如果逻辑视图名为"user/register",它会尝试查找名为"/WEB-INF/jsp/user/register.jsp"的页面。 2. **FreeMarkerViewResolver**:用于处理FreeMarker模板引擎生成的视图。它解析逻辑视图名,结合FreeMarker配置,找到对应的模板文件。 3. **BeanNameViewResolver**:通过视图的bean名称来解析视图。如果逻辑视图名与Spring容器中某个bean的名称相同,那么这个bean将作为视图来使用。 4. **XmlViewResolver**:用于解析XML配置文件中的视图定义,使得视图配置可以脱离Java代码。 5. **ContentNegotiatingViewResolver**:这是一个特殊的视图解析器,不直接解析视图,而是根据HTTP请求的Accept头信息(MIME类型)来决定使用哪个视图解析器。它允许服务端提供多种格式的响应,如JSON、XML或HTML,从而实现RESTful服务。 Spring MVC框架的结构主要由DispatcherServlet、HandlerMapping、HandlerAdapter、ViewResolver等组成。DispatcherServlet作为前端控制器,接收所有HTTP请求并分发到相应的处理器。HandlerMapping负责映射请求到处理器方法,HandlerAdapter则封装了处理器方法的执行。视图解析器ViewResolver将处理器返回的ModelAndView对象(包含模型数据和视图名)转化为实际的视图。 在注解驱动的控制器示例中,`@Controller`注解标识了一个类作为控制器,`@RequestMapping`用于定义控制器处理的URL模式,而方法级别的`@RequestMapping`则进一步细化到处理特定的子路径。控制器方法通常返回逻辑视图名,由视图解析器进一步处理。 通过这些知识点,我们可以更好地理解和配置Spring MVC应用程序,使其能够灵活地处理各种视图需求,并利用内容协商提供适应不同客户端的响应。