流程查看方法
1. 在任一handle方法中打断点调试,如在HelloworldController的sayHello方法中打断点;
2. 启动调试;
大致流程
1. DispatcherServlet.doDispatch(HttpServletRequest, HttpServletResponse)
2. AnnotationMethodHandlerAdapter.handle(HttpServletRequest, HttpServletResponse, Object)
3. AnnotationMethodHandlerAdapter.invokeHandlerMethod(HttpServletRequest, HttpServletResponse, Object)
4. DispatcherServlet.processDispatchResult(HttpServletRequest, HttpServletResponse, HandlerExecutionChain, ModelAndView, Exception)
5. DispatcherServlet.render(ModelAndView, HttpServletRequest, HttpServletResponse)
6. AbstractView(AbstractView).render(Map<String,?>, HttpServletRequest, HttpServletResponse)
7. AbstractView(InternalResourceView).renderMergedOutputModel(Map<String,Object>, HttpServletRequest, HttpServletResponse)
8. javax.servlet.RequestDispatcher.forward(ServletRequest arg0, ServletResponse arg1)
视图和视图解析器
请求处理方法执行完成后,最终返回一个 ModelAndView对象。对于那些返回 String,View 或 ModeMap 等类型的处理方法,
Spring MVC 也会在内部将它们装配成一个ModelAndView 对象,它包含了逻辑名和模型对象的视图
Spring MVC 借助视图解析器(ViewResolver)得到最终的视图对象(View),最终的视图可以是 JSP ,也可能是Excel、JFreeChart 等各种表现形式的视图
对于最终究竟采取何种视图对象对模型数据进行渲染,处理器并不关心,处理器工作重点聚焦在生产模型数据的工作上,从而实现 MVC 的充分解耦
视图
视图的作用是渲染模型数据,将模型里的数据以某种形式呈现给客户。
为了实现视图模型和具体实现技术的解耦,Spring在org.springframework.web.servlet 包中定义了一个高度抽象的 View接口
视图对象由视图解析器负责实例化。由于视图是无状态的,所以他们不会有线程安全的问题
常用的视图实现类
视图解析器
SpringMVC 为逻辑视图名的解析提供了不同的策略,可以在 Spring WEB 上下文中配置一种或多种解析策略,
并指定他们之间的先后顺序。每一种映射策略对应一个具体的视图解析器实现类。
视图解析器的作用比较单一:将逻辑视图解析为一个具体的视图对象。
所有的视图解析器都必须实现 ViewResolver 接口
常用的视图解析器实现类
程序员可以选择一种视图解析器或混用多种视图解析器每个视图解析器都实现了 Ordered 接口并开放出一个 order 属性,
可以通过 order 属性指定解析器的优先顺序,order 越小优先级越高。
SpringMVC 会按视图解析器顺序的优先顺序对逻辑视图名进行解析,直到解析成功并返回视图对象,否则将抛出 ServletException 异常
InternalResourceViewResolver
JSP 是最常见的视图技术,可以使用InternalResourceViewResolver 作为视图解析器
<!--配置视图解析器:如何把handler方法返回值解析为实际的物理视图--> <!--视图名称解析器:将视图逻辑名解析为: /pages/<viewName>.jsp--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/pages/"></property> <property name="suffix" value=".jsp"></property> </bean>
若项目中使用了 JSTL,则 SpringMVC 会自动把视图由InternalResourceView 转为 JstlView
相关推荐
在Spring MVC框架中,视图和视图解析器是实现MVC模式中“V”(View)部分的关键组件。它们负责将处理完的数据转化为用户可以理解的格式,并展示在浏览器上。视图解析器则是连接控制器与视图的桥梁,它负责根据返回的...
视图解析器(ViewResolver)根据指定的逻辑视图名查找物理视图,常见的视图技术有JSP、Thymeleaf、FreeMarker等。 Spring MVC还支持数据绑定,自动将请求参数绑定到Java对象,这极大地简化了表单提交的处理。对于...
Spring MVC 配置详解 Spring MVC 是一个基于 DispatcherServlet 的 MVC 框架,它是当前主流的 Web 框架之一。要想灵活运用 Spring MVC 来应对大多数的 Web 开发,就必须要掌握它的配置及原理。 一、Spring MVC ...
在2015年的版本中,Spring MVC 4已经相当成熟,提供了许多特性来简化开发流程并提高开发效率。在这个"Mastering Spring MVC 4(2015.09)源码"中,我们可以深入理解这个框架的核心概念和实际应用。 首先,Spring MVC ...
4. ViewResolver:视图解析器,根据逻辑视图名返回实际视图对象。 5. Model-View-Controller:模型-视图-控制器,其中Controller负责处理请求,Model存储数据,View展示结果。 三、MVC流程 1. 用户发送HTTP请求至...
Spring Web MVC是Spring框架的核心模块之一,专为构建Web应用程序提供模型-视图-控制器(MVC)架构支持。在Spring 5.0.9这个版本中,它延续了Spring对开发者友好、灵活且高性能的设计原则,为开发人员提供了强大的...
在视图解析方面,Spring Web MVC提供了视图解析器链的概念,使得开发人员可以按需使用不同的解析器组合,以适应不同的视图技术。在支持Ajax方面,Spring Web MVC为开发者提供了多种机制,如拦截器接口、@RequestBody...
Spring MVC 提供了丰富的功能,包括请求处理、视图解析、数据绑定、异常处理等,旨在简化 Web 开发流程。 1. **Spring MVC 概述**:Spring MVC 是基于 Spring 框架构建的,它遵循 MVC 设计模式,将业务逻辑、数据和...
视图解析器(ViewResolver)在其中起到了关键作用,它根据逻辑视图名来找到实际的视图资源。 在配置方面,Spring MVC使用XML或Java配置来定义组件,包括Controller、Service、DAO等。随着Spring的发展,现在更倾向...
- **使用 Spring 配置**:DispatcherServlet 使用 Spring 配置来发现处理请求映射、视图解析、异常处理等所需的委托组件。 ##### 2.3 上下文层次结构 - **WebApplicationContext**:DispatcherServlet 需要一个 `...
Spring MVC提供多种视图解析器,如InternalResourceViewResolver用于处理JSP视图,VelocityViewResolver处理Velocity模板等。 六、Form标签与数据绑定 Spring MVC提供了丰富的表单标签库,如、等,简化了表单元素...
1. **配置**:在Spring MVC项目中,通常需要创建一个`DispatcherServlet`配置文件,例如`servlet-context.xml`,在这里定义了Spring MVC的组件,如视图解析器、处理器映射器、拦截器等。这些配置将告诉Spring如何...
首先,Spring MVC的核心组件包括DispatcherServlet、Controller、Model-View-Controller(MVC)架构、视图解析器和数据绑定等。DispatcherServlet作为Spring MVC的前端控制器,负责接收HTTP请求,然后根据配置分发到...
5. 视图解析器(ViewResolver)根据返回的结果信息确定要渲染的视图。 6. 视图(View)渲染并返回给用户。 ### 4. 学习Spring MVC的原因 随着技术和需求的发展,Spring MVC逐渐取代了传统的SSH(Struts1.x+Spring+...
除此之外,Spring MVC还支持RESTful风格的URL设计、文件上传下载、异常处理、视图解析以及模板引擎集成(如JSP、Thymeleaf等)。这个翻译文档详细阐述了这些特性,并提供了丰富的示例代码,对于学习和掌握Spring MVC...
在Spring MVC框架中,视图解析器扮演着至关重要的角色,它负责将控制器处理方法返回的逻辑视图名称转换为实际的物理视图资源。`InternalResourceViewResolver`是Spring MVC提供的一种内置的视图解析器,主要用于处理...
视图解析器根据视图名称查找实际的视图资源。例如,我们可以配置`InternalResourceViewResolver`来将视图名转换为JSP页面的路径。 7. **数据绑定和验证** Spring MVC提供了强大的数据绑定功能,可以自动将HTTP...
在本示例 "spring-mvc-demo" 中,我们将探讨 Spring MVC 的核心概念、配置、控制器、视图解析以及如何与数据库进行交互。 1. **核心概念** - **DispatcherServlet**:Spring MVC 的入口点,负责处理所有的 HTTP ...