SpringMVC 运行原理及主要组件
运行原理图
组件介绍
①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 运行原理及主要组件相关推荐
- 【SpringMVC】面试常见问题:总结 SpringMVC 运行原理
请简述SpringMVC 运行原理: 如果在 web.xml 中设置 DispatcherServlet 的 <url-pattern> 为/时, 当用户发起请求, 请求一个控制器, 首先 ...
- java中MVC原理详解,SpringMVC运行原理,MVC的基本原理
SpringMVC运行原理,MVC的基本原理 按照上边的执行流程图,我们可以看出一个SpringMVC整体的一个执行轮廓,下面我们具体来分析下 首先服务器接收到一个请求,匹配并调用了我们的前端控制器( ...
- spring mvc学习(44):springMVC运行原理
springMVC处理请求的流程 SpringMVC的工作原理图: SpringMVC流程 1. 用户发送请求至前端控制器DispatcherServlet. 2. DispatcherServl ...
- SpringMVC的运行原理
SpringMVC的运行原理 核心组件:(SpringMVC 四大组件) 1.1 DispatchServlet: Servlet分发器,整个SPringMVC框架入口. 1.2 HandlerMap ...
- SpringMVC工作原理详解
点击上方"方志朋",选择"置顶或者星标" 你的关注意义重大! 先来看一下什么是 MVC 模式 MVC 是一种设计模式. MVC 的原理图如下: SpringMV ...
- springmvc项目在启动完成之后执行一次方法_SpringMVC运行原理
springMVC主要有四大控件,其中有DispatcherServlet,hadlerMapping,HanlerAdapter,ModelAndView. springMVC的运行步骤大致是当客服 ...
- Hadoop基础-Hdfs各个组件的运行原理介绍
Hadoop基础-Hdfs各个组件的运行原理介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.NameNode工作原理(默认端口号:50070) 1>.什么是NameN ...
- Serverless 实战 —— Serverless 的运行原理与组件架构
Serverless 的运行原理与组件架构 本文重点探讨下开发者使用 Serverless 时经常遇到的一些问题,以及如何解决 过去一年,我们和大量 Serverless 用户进行了线上和线下的交流, ...
- SpringMVC工作原理 1
大家好,我是IT修真院深圳分院第十一期学员,一枚正直纯洁善良的JAVA程序员. 今天给大家分享一下,修真院官网JAVA任务二的一个知识点:SpringMVC工作原理 1.背景介绍 一:背景介绍 Jav ...
最新文章
- 【小知识】C、C++ 中const的实现机制
- [代码笔记]VUE路由根据返回状态判断添加响应拦截器
- 七天学会SALTSTACK自动化运维 (3)
- NHibernate初学者指南(10):一级和二级缓存
- 简单的ASP.NET无刷新分页
- jzoj2908,P1527-[集训队互测 2012]矩阵乘法【整体二分,二维树状数组】
- java中HashMap的用法
- LeetCode 5235. 找出输掉零场或一场比赛的玩家(计数)
- 超大图上的节点表征学习
- mysql 1261 load data_mysql使用load data导入数据文件
- 你应该知道的大数据领域12大动向
- Eclipse Class Decompiler——Java反编译插件
- 基于java的高校实习生管理系统
- 深入了解requestFullscreen()方法实现全屏显示
- 祛痘收缩毛孔的简单方法 - 健康程序员,至尚生活!
- Flutter Navigator 高级用法
- 谷歌文档为什么没法登录_如何将Google文档文档转换为Microsoft Office格式
- 支付宝原生组件(酒店时间选择)
- ThingsBoard RPC control
- 计算机网络习题:网络层部分
热门文章
- OSX上摆脱vagrant搭建CoreOS集群
- LSA类型讲解——LSA-1【1类LSA——Router LSA】详解
- SpringMVC 返回值分类
- “mysql数据库表锁死,既打不开,也关不上”的解决方案
- 使用Sci-kit学习和XGBoost进行多类别分类:使用Brainwave数据的案例研究
- c++ 0x8000ffff灾难性故障_电容器毁灭性故障,让PCB板直接报废!
- mysql 连接失败的日志(或者输出)结果分析
- Git——单人操作及多人协同操作
- Python高级——多继承问题(super与mro)
- 计算高斯混合模型的可分性和重叠度(Overlap Rate, OLR)