SpringMVC是当今最主流的Web MVC框架,没有之一,要做一名合格的JavaWeb工程师,学好它势在必行!
与Struts2原理不同,SpringMVC是通过最基础最传统的servlet来实现对框架源代码的封装以及对整个流程的控制的,而Struts2是通过过滤器来实现URL路径与具体Action的对应关系确认的。(Struts2具体机制参看另一篇博客链接)
下图是springMVC的原理示意图:
SpringMVC工作流程概述:
1、客户端向web服务器(如tomcat)发送一个http请求,web服务器对http请求进行解析,解析后的URL地址如果匹配了DispatcherServlet的映射路径(通过web.xml中的servlet-mapping配置),web容器就将请求交给DispatcherServlet处理。
2、DispatcherServlet接收到这个请求后,再对URL进行解析,得到请求资源标识符(URI)。然后调用相应方法得到的HandlerMapping对象,再根据URI,调用这个对象的相应方法获得Handler对象以及它对应的拦截器。(在这里只是获得了Handler对象,并不会操作它,在SpringMVC中,是通过HandlerAdapter对Handler进行调用、控制的)
3、DispatcherServlet根据得到的Handler对象,选择一个合适的HandlerAdapter,创建其实例对象,执行拦截器中的preHandler()方法。
4、在拦截器方法中,提取请求中的数据模型,填充Handler入参,所以所有准备工作都已做好,开始执行Handler(我们写的controller代码并不是能被直接执行,需要有刚才那些操作,才能转变为Handler被执行)。
5、Handler执行完毕后返回一个ModelAndView对象给DispatcherServlet。
6、这个ModleAndView只是一个逻辑视图,并不是真正的视图,DispatcherServlet通过ViewResolver视图解析器将逻辑视图转化为真正的视图(通俗理解为将视图名称补全,如加上路径前缀,加上.jsp后缀,能指向实际的视图)。
7、DispatcherServlet通过Model将ModelAndView中得到的处数据解析后用于渲染视图。将得到的最终视图通过http响应返回客户端。
概念解析:
1、HandlerMapping
spring mvc 使用HandlerMapping来找到并保存url请求和处理函数间的mapping关系。
以DefaultAnnotationHandlerMapping为例来具体看HandlerMapping的作用
DefaultAnnotationHandlerMapping将扫描当前所有已经注册的spring beans中的@requestmapping标注以找出url 和 handler method处理函数的关系并予以关联。
2、Handleradapter
Spring MVC通过HandlerAdapter来实际调用处理函数。
以AnnotationMethodHandlerAdapter为例
DispatcherServlet中根据handlermapping找到对应的handler method后,首先检查当前工程中注册的所有可用的handlerAdapter,根据handlerAdapter中的supports方法找到可以使用的handlerAdapter。通过调用handlerAdapter中的handle方法来处理及准备handler method中的参数及annotation(这就是spring mvc如何将reqeust中的参数变成handle method中的输入参数的地方),最终调用实际的handle method。
其他问题:
Spring为什么要结合使用HandlerMapping以及HandlerAdapter来处理Handler?
符合面向对象中的单一职责原则,代码架构清晰,便于维护,最重要的是代码可复用性高。如HandlerAdapter可能会被用于处理多种Handler。
时序图(转载):
相关推荐
#### 四、SpringMVC的工作原理 - **初始化阶段**:启动服务器时,根据`web.xml`的配置加载前端控制器`DispatcherServlet`。在加载过程中,`DispatcherServlet`会执行一系列初始化操作,如加载配置文件、初始化视图...
SpringMVC是Spring框架的一部分,专门用于处理Web应用程序的...同时,通过查看项目结构和配置文件,可以加深对SpringMVC工作原理的理解。对于Eclipse和MyEclipse的用户来说,导入源码后可以直接运行,方便调试和学习。
**SpringMVC 入门小程序详解** SpringMVC是Spring框架的一个重要...通过分析和实践这个简单的SpringMVC程序,你可以了解到如何构建一个基于SpringMVC的Web应用,理解其工作原理,并为后续更复杂的项目打下坚实基础。
下面我们将深入探讨这三个框架的原理、整合过程以及在实际项目中的应用。 1. **Spring框架**:Spring是一个全面的后端开发框架,它提供了依赖注入(DI)和面向切面编程(AOP)等核心特性,简化了Java企业级应用的...
### Spring MVC 基础原理详解 ...对于初学者来说,理解 Spring MVC 的工作原理以及核心组件的功能是非常重要的。掌握了这些基础知识后,开发者就可以更加熟练地运用 Spring MVC 构建复杂的应用系统。
1. **SpringMVC 概述**: SpringMVC 提供了一个模型-视图-控制器架构,用于处理 HTTP 请求和响应。它简化了 MVC 应用的开发,通过提供注解驱动、依赖注入等功能,使得代码更加简洁和易于测试。 2. **拦截器原理**...
1. **SpringMVC简介**:解释SpringMVC的工作原理,以及与Spring框架的关系。 2. **配置与启动**:讲解如何配置SpringMVC的DispatcherServlet、配置处理器映射器和视图解析器等。 3. **控制器**:介绍Controller接口...
在这个尚硅谷的教程中,佟刚老师可能详细介绍了SpringMVC的基本概念、工作原理以及如何在实际项目中应用。 1. **SpringMVC简介** SpringMVC是Spring框架的一部分,旨在简化Java Web开发。它提供了一种用于处理HTTP...
通过理解这些步骤及其工作原理,开发人员可以更好地掌握SpringMVC的工作机制,从而更有效地开发和维护基于SpringMVC的应用程序。希望通过对SpringMVC核心流程的深入总结,能够帮助读者更全面地了解这一强大的Web框架...
5 SpringMVC概述.pptx和6.0 SpringMVC详解.pptx可能会深入讲解SpringMVC的工作原理,如DispatcherServlet、HandlerMapping、ModelAndView等核心概念,以及如何创建控制器、处理HTTP请求和返回响应。 Mybatis是一个...
SpringMVC 是一款基于 Java 的轻量级 Web 开发框架,是 Spring 框架的重要...通过分析这些文件,你可以更深入地理解SpringMVC的工作原理和实践应用。学习和研究这个实例,将有助于提升你在SpringMVC框架下的开发技能。
SpringMVC 项目是一个很好的起点,它帮助初学者理解 MVC 设计模式以及 SpringMVC 框架的工作原理。通过实践这个简单的 "Hello, World!" 示例,你可以了解到如何配置 SpringMVC,编写 Controller,设置视图,以及如何...
在本文中,我们将深入探讨如何使用SpringMVC框架来实现一个简单的登录配置。...这个基础示例可以帮助理解SpringMVC的工作原理,但实际项目中,登录验证通常会涉及更复杂的安全机制,如Spring Security。
#### SpringMVC框架概述 SpringMVC是一个基于`DispatcherServlet`的MVC(Model-View-Controller)框架,它主要用于构建基于Java的应用程序中的Web层逻辑。在这个框架中,每一个HTTP请求都会被`DispatcherServlet`...
1. **概述**:SpringMVC的核心组件是`DispatcherServlet`,它负责接收用户的HTTP请求,并分发给合适的控制器处理。 2. **流程**: - 用户发送HTTP请求到服务器。 - 请求到达`DispatcherServlet`。 - `...
1. **Spring MVC概述**:介绍SpringMVC作为Spring框架的一部分,如何简化Java Web应用程序的开发,以及其与其他MVC框架的区别。 2. **DispatcherServlet**:这是SpringMVC的入口点,负责请求的分发。讲解它如何拦截...
本书通过对SpringMVC源代码的深入解析,详细讲解了这些概念和机制,帮助读者理解框架的工作原理,提升对SpringMVC的使用技巧,从而在实际项目中更加游刃有余。通过阅读和实践书中的案例,你可以掌握如何高效地利用...