`
y806839048
  • 浏览: 1117379 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

SpringMVC工作原理概述

阅读更多

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教程及实现原理

    #### 四、SpringMVC的工作原理 - **初始化阶段**:启动服务器时,根据`web.xml`的配置加载前端控制器`DispatcherServlet`。在加载过程中,`DispatcherServlet`会执行一系列初始化操作,如加载配置文件、初始化视图...

    SpringMVC入门案例源码

    SpringMVC是Spring框架的一部分,专门用于处理Web应用程序的...同时,通过查看项目结构和配置文件,可以加深对SpringMVC工作原理的理解。对于Eclipse和MyEclipse的用户来说,导入源码后可以直接运行,方便调试和学习。

    SpringMVC 入门小程序

    **SpringMVC 入门小程序详解** SpringMVC是Spring框架的一个重要...通过分析和实践这个简单的SpringMVC程序,你可以了解到如何构建一个基于SpringMVC的Web应用,理解其工作原理,并为后续更复杂的项目打下坚实基础。

    ssm(Spring+SpringMVC+MyBatis)整合框架

    下面我们将深入探讨这三个框架的原理、整合过程以及在实际项目中的应用。 1. **Spring框架**:Spring是一个全面的后端开发框架,它提供了依赖注入(DI)和面向切面编程(AOP)等核心特性,简化了Java企业级应用的...

    springMVC基础原理

    ### Spring MVC 基础原理详解 ...对于初学者来说,理解 Spring MVC 的工作原理以及核心组件的功能是非常重要的。掌握了这些基础知识后,开发者就可以更加熟练地运用 Spring MVC 构建复杂的应用系统。

    springMVC拦截器项目

    1. **SpringMVC 概述**: SpringMVC 提供了一个模型-视图-控制器架构,用于处理 HTTP 请求和响应。它简化了 MVC 应用的开发,通过提供注解驱动、依赖注入等功能,使得代码更加简洁和易于测试。 2. **拦截器原理**...

    开涛Spring和SpringMVC书籍

    1. **SpringMVC简介**:解释SpringMVC的工作原理,以及与Spring框架的关系。 2. **配置与启动**:讲解如何配置SpringMVC的DispatcherServlet、配置处理器映射器和视图解析器等。 3. **控制器**:介绍Controller接口...

    1. 尚硅谷_佟刚_SpringMVC_概述.zip

    在这个尚硅谷的教程中,佟刚老师可能详细介绍了SpringMVC的基本概念、工作原理以及如何在实际项目中应用。 1. **SpringMVC简介** SpringMVC是Spring框架的一部分,旨在简化Java Web开发。它提供了一种用于处理HTTP...

    Spring+SpringMVC+Mybatis资源课件

    5 SpringMVC概述.pptx和6.0 SpringMVC详解.pptx可能会深入讲解SpringMVC的工作原理,如DispatcherServlet、HandlerMapping、ModelAndView等核心概念,以及如何创建控制器、处理HTTP请求和返回响应。 Mybatis是一个...

    SpringMVC深入总结 核心流程图 中关村北大青鸟网上学堂 docx

    通过理解这些步骤及其工作原理,开发人员可以更好地掌握SpringMVC的工作机制,从而更有效地开发和维护基于SpringMVC的应用程序。希望通过对SpringMVC核心流程的深入总结,能够帮助读者更全面地了解这一强大的Web框架...

    SpringMVC 实例

    SpringMVC 是一款基于 Java 的轻量级 Web 开发框架,是 Spring 框架的重要...通过分析这些文件,你可以更深入地理解SpringMVC的工作原理和实践应用。学习和研究这个实例,将有助于提升你在SpringMVC框架下的开发技能。

    SpringMVC项目

    SpringMVC 项目是一个很好的起点,它帮助初学者理解 MVC 设计模式以及 SpringMVC 框架的工作原理。通过实践这个简单的 "Hello, World!" 示例,你可以了解到如何配置 SpringMVC,编写 Controller,设置视图,以及如何...

    SpringMVC实现简单登录配置

    在本文中,我们将深入探讨如何使用SpringMVC框架来实现一个简单的登录配置。...这个基础示例可以帮助理解SpringMVC的工作原理,但实际项目中,登录验证通常会涉及更复杂的安全机制,如Spring Security。

    注解的springMVC介绍

    #### SpringMVC框架概述 SpringMVC是一个基于`DispatcherServlet`的MVC(Model-View-Controller)框架,它主要用于构建基于Java的应用程序中的Web层逻辑。在这个框架中,每一个HTTP请求都会被`DispatcherServlet`...

    SpringMVC第三天.pdf

    1. **概述**:SpringMVC的核心组件是`DispatcherServlet`,它负责接收用户的HTTP请求,并分发给合适的控制器处理。 2. **流程**: - 用户发送HTTP请求到服务器。 - 请求到达`DispatcherServlet`。 - `...

    springmvc课堂笔记(两天)

    1. **Spring MVC概述**:介绍SpringMVC作为Spring框架的一部分,如何简化Java Web应用程序的开发,以及其与其他MVC框架的区别。 2. **DispatcherServlet**:这是SpringMVC的入口点,负责请求的分发。讲解它如何拦截...

    看透springMvc源代码分析与实践.pdf

    本书通过对SpringMVC源代码的深入解析,详细讲解了这些概念和机制,帮助读者理解框架的工作原理,提升对SpringMVC的使用技巧,从而在实际项目中更加游刃有余。通过阅读和实践书中的案例,你可以掌握如何高效地利用...

Global site tag (gtag.js) - Google Analytics