运行原理图

组件介绍

①DispatcherServlet(前端/核心控制器)
整个流程控制的核心,调用其他组件处理用户的请求,降低了组件之间的耦合性
MVC模式:一个WEB应用中,只有唯一的一个控制器和客户端交互,所有的客户端和服务器单点接触,这个控制器称为核心控制器(前端控制器)。
传统定义中,核心控制器使用Servlet实现。
MVC优势:单点接触,有效的解耦,实现功能的重用。

②HandlerMapping(处理映射器)
复责根据用户请求找到Handler(处理器,如用户自定义的Control),SpringMVC提供了不同的映射器实现不同的映射方式:
配置文件方式、实现接口方式、注解方式
映射器内部封装了一个类似map的数据结构,使用URL作为key,HandleExecutionChain作为value。
必不可少的组件,无论是否配置,SpringMVC默认提供:
由<mvc:annotation-driven>配置时,默认映射器为RequestMappingHandleMapping
若无该标签,且用注解开发,默认映射器为RequestMappingHandleMapping(老版本有其他的,过时了)

③HandlerAdapter(适配器)
通过HandleAdapter对处理器(Handler)进行执行,适配器的应用,通过扩展适配器可以对更多类型的处理器进行执行
最基础的适配器:SimpleControllerHandlerAdapter,处理自定义控制器(继承Control)和SpringMVC控制器顶级接口Controller之间关联的
必不可少的组件,无论是否配置,SpringMVC默认提供:
由<mvc:annotation-driven/>配置,适配器对象为HttpRequestHandlerAdapter

④Handler(后端控制器)
在DispatchServlet的控制下Handler对具体的用户请求进行处理
由于Handler涉及到具体的用户业务请求,所以一般情况需要程序员根据业务请求开发Handler
对Handler无强制要求,SpringMVC对Handler的引用定义类型为Object
理论不是必要的核心组件,
Ps:Spring是一个线程不安全的,轻量级的框架,一个Handler对象需处理所有请求,需注意线程安全问题。
该组件是DispatchServlet通过HandlerMapping通过getBean获取到,并进行缓存,即只有一个Handler(单例)
一般在Handler所对应的类中只定义只读服务提供属性,或静态final变量,或通过ThreadLocal

⑤ViewResolver(视图解析器)
负责将处理结果(MAV,ModelAndView)生成View视图,
首先根据逻辑视图名解析成物理视图名(即加前/后缀),然后对View进行渲染将处理结果通过页面展示给用户
必要的组件之一,SpringMVC默认提供:
InternalResourceViewResolver,内部资源视图解析器
视图解析器是用于处理动态逻辑视图的,静态视图逻辑不通过SpringMVC流程,直接通过WEB中间件(如Tomcat,静态资源配置)访问

运行流程

发送请求------->DisptcherServlet------->HandlerMapping------->HandlerAdapter-------->Controller-------->ViewResolver-------->响应请求

如果在web.xml中设置DispatcherServlet的<url-pattern>为/(表拦截器)时,当用户发起请求,请求一个控制器,首先会执行DispatcherServlet,由DispatcherServlet调用HandlerMapping的DefaultAnnotationHandlerMapping解析URL,解析后调用HandlerAdapter组件的AnnotationMethodHandlerAdapter调用Controller中的HandlerMethod,当HandlerMethod执行完成后会返回View,它会被ViewResolver进行视图解析,解析后调用jsp对应的.class文件并运行,最终把运行的.class文件的结果响应给客户端。

SpringMVC 运行原理及主要组件相关推荐

  1. 【SpringMVC】面试常见问题:总结 SpringMVC 运行原理

    请简述SpringMVC 运行原理: 如果在 web.xml 中设置 DispatcherServlet 的 <url-pattern> 为/时, 当用户发起请求, 请求一个控制器, 首先 ...

  2. java中MVC原理详解,SpringMVC运行原理,MVC的基本原理

    SpringMVC运行原理,MVC的基本原理 按照上边的执行流程图,我们可以看出一个SpringMVC整体的一个执行轮廓,下面我们具体来分析下 首先服务器接收到一个请求,匹配并调用了我们的前端控制器( ...

  3. spring mvc学习(44):springMVC运行原理

    springMVC处理请求的流程 SpringMVC的工作原理图: SpringMVC流程 1.  用户发送请求至前端控制器DispatcherServlet. 2.  DispatcherServl ...

  4. SpringMVC的运行原理

    SpringMVC的运行原理 核心组件:(SpringMVC 四大组件) 1.1 DispatchServlet: Servlet分发器,整个SPringMVC框架入口. 1.2 HandlerMap ...

  5. SpringMVC工作原理详解

    点击上方"方志朋",选择"置顶或者星标" 你的关注意义重大! 先来看一下什么是 MVC 模式 MVC 是一种设计模式. MVC 的原理图如下: SpringMV ...

  6. springmvc项目在启动完成之后执行一次方法_SpringMVC运行原理

    springMVC主要有四大控件,其中有DispatcherServlet,hadlerMapping,HanlerAdapter,ModelAndView. springMVC的运行步骤大致是当客服 ...

  7. Hadoop基础-Hdfs各个组件的运行原理介绍

    Hadoop基础-Hdfs各个组件的运行原理介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.NameNode工作原理(默认端口号:50070) 1>.什么是NameN ...

  8. Serverless 实战 —— Serverless 的运行原理与组件架构

    Serverless 的运行原理与组件架构 本文重点探讨下开发者使用 Serverless 时经常遇到的一些问题,以及如何解决 过去一年,我们和大量 Serverless 用户进行了线上和线下的交流, ...

  9. SpringMVC工作原理 1

    大家好,我是IT修真院深圳分院第十一期学员,一枚正直纯洁善良的JAVA程序员. 今天给大家分享一下,修真院官网JAVA任务二的一个知识点:SpringMVC工作原理 1.背景介绍 一:背景介绍 Jav ...

最新文章

  1. 【小知识】C、C++ 中const的实现机制
  2. [代码笔记]VUE路由根据返回状态判断添加响应拦截器
  3. 七天学会SALTSTACK自动化运维 (3)
  4. NHibernate初学者指南(10):一级和二级缓存
  5. 简单的ASP.NET无刷新分页
  6. jzoj2908,P1527-[集训队互测 2012]矩阵乘法【整体二分,二维树状数组】
  7. java中HashMap的用法
  8. LeetCode 5235. 找出输掉零场或一场比赛的玩家(计数)
  9. 超大图上的节点表征学习
  10. mysql 1261 load data_mysql使用load data导入数据文件
  11. 你应该知道的大数据领域12大动向
  12. Eclipse Class Decompiler——Java反编译插件
  13. 基于java的高校实习生管理系统
  14. 深入了解requestFullscreen()方法实现全屏显示
  15. 祛痘收缩毛孔的简单方法 - 健康程序员,至尚生活!
  16. Flutter Navigator 高级用法
  17. 谷歌文档为什么没法登录_如何将Google文档文档转换为Microsoft Office格式
  18. 支付宝原生组件(酒店时间选择)
  19. ThingsBoard RPC control
  20. 计算机网络习题:网络层部分

热门文章

  1. OSX上摆脱vagrant搭建CoreOS集群
  2. LSA类型讲解——LSA-1【1类LSA——Router LSA】详解
  3. SpringMVC 返回值分类
  4. “mysql数据库表锁死,既打不开,也关不上”的解决方案
  5. 使用Sci-kit学习和XGBoost进行多类别分类:使用Brainwave数据的案例研究
  6. c++ 0x8000ffff灾难性故障_电容器毁灭性故障,让PCB板直接报废!
  7. mysql 连接失败的日志(或者输出)结果分析
  8. Git——单人操作及多人协同操作
  9. Python高级——多继承问题(super与mro)
  10. 计算高斯混合模型的可分性和重叠度(Overlap Rate, OLR)