首页 > 其他分享 >SpringMvc的执行流程及工作原理

SpringMvc的执行流程及工作原理

时间:2023-07-31 11:55:04浏览次数:31  
标签:请求 SpringMvc 流程 视图 Handler 处理器 原理 执行 View

 

先上图
针对流程图解析一下:

用户发送请求至前端控制器DispatcherServlet
前端控制器 DispatcherServlet收到请求调用处理器映射器HandlerMapping。
处理器映射器根据请求url找到具体的处理器,生成处理器执行链HandlerExecutionChain(包括处理器对象和处理器拦截器)一并返回给DispatcherServlet
DispatcherServlet根据处理器Handler获取处理器适配器HandlerAdapter执行HandlerAdapter处理一系列的操作,包括但不限于:参数封装,数据格式转换,数据验证等操作
执行处理器Handler(Controller,也叫页面控制器)
执行完成返回ModelAndView
HandlerAdapter接收到 ModelAndView对象后,将其返回给 DispatcherServlet
DispatcherServlet 接收到 ModelAndView 对象后,会请求 ViewResolver(视图解析器)对视图进行解析
ViewReslover解析后返回具体View
DispatcherServlet 接收到具体的 View 视图后,进行视图渲染,将 Model 中的模型数据填充到 View 视图中的 request 域,生成最终的 View(视图)
相应用户请求
我们再对流程里出现的一些组件进行解析

前端控制器(DispatcherServlet):他的主要作用是接受客户端请求以及响应请求,它也是整个SpringMvc执行流程的中心,控制整个流程的执行,对各个组件进行统一调度
处理器映射器(HandlerMapping):其作用是根据请求的 URL 路径,通过注解或者 XML 配置,寻找匹配的处理器(Handler)信息。
处理器(Handler):和 Java Servlet 扮演的角色一致。其作用是执行相关的请求处理逻辑,并返回相应的数据和视图信息,将其封装至 ModelAndView 对象中。
处理器适配器(HandlAdapter):按照特定规则执行相关的处理器(Handler)
ModelAndView:是springmvc的封装对象,将model和view封装在一起。
视图解析器(ViewResolver):ViewResolver负责将处理结果生成View视图,ViewResolver首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户
视图(View):其本身是一个接口,View的实现类支持不同类型的视图,例如:jspview,jstlview,pdfview等

标签:请求,SpringMvc,流程,视图,Handler,处理器,原理,执行,View
From: https://www.cnblogs.com/lcllcl/p/17593068.html

相关文章

  • Android系统原理
    Android的系统架构可以分为四个层次:应用层、应用框架层、系统运行库层和Linux内核层。应用层 是直接面向用户的,包括各种应用程序和用户界面。应用框架层提供了各种API和服务,使得应用程序可以访问系统资源和功能。系统运行库层 提供各种系统库,包括C库、媒体库、图......
  • CS5213 国产HDMI转VGA带音频方案芯片|CS5213规格书|CS5213原理图
    集睿致远/ASL推出的CS5213芯片是一个国产HDMI(高清多媒体接口)到VGA桥接芯片。它将HDMI信号转换为标准VGA信号它可以在适配器、智能电缆等设备中设计CS5213特征将HDMI信号转换为VGA输出支持数字信号到模似信号的转换支持HDCP1.0/1.1/1.2操作简单,无需设置支持热插拔.HDMI视频输入格......
  • jvm - 双亲委派机制详细解析及原理
    双亲委派机制是Java虚拟机中的一种类加载机制,它通过层层委托的方式保证了Java类的安全性和一致性。下面是对双亲委派机制的详细解析及原理。在Java虚拟机中,类加载器负责将字节码文件加载到内存中并转化为可执行的Java类。而双亲委派机制是一种类加载器的工作方式,它的核心思想是:当......
  • vue2集成bpmn流程图,可导入导出预览等
    1.使用到的组件组件源码版本licensebpmn-js地址7.3.1bpmn.iobpmn-js-properties-panel地址0.37.2MITcamunda-bpmn-moddle地址4.5.0MIT版本一定要对,否则可能会报错2.组件代码<template><divid="app"><divclass="container">......
  • 使用Eclipse构建Maven的SpringMVC项目
    使用Eclipse构建Maven的SpringMVC项目      首先Eclipse需要安装Maven的插件,地址:http://m2eclipse.sonatype.org/sites/m2e。     用MyEclipse安装Maven插件,建出的Maven项目有些问题。一是,发布tomcat的时候resources总是不会被发布到tomcat下;二是,把WEB-INF下的cla......
  • 验证码识别全流程实战
    本文将介绍验证码的历史与发展、验证码破解的历史与发展,验证码破解全流程实战。验证码的历史与发展验证码,全称为“CompletelyAutomatedPublicTuringtesttotellComputersandHumansApart”,即全自动区分计算机和人类的图灵测试,Captcha。早在上个世纪90年代,为了防止恶......
  • OSPF工作原理
    邻居建立过程 过程概述当两台路由器接口启用ospf功能接口开始相互发送Hello报文(组播方式,目的地址224.0.0.5)当Hello包相互发现邻居之后开始协商主从关系(通过DD报文协商主从,用与交互数据的可靠性,此时的DD报文不是完整的)当主从关系协商完成,开始相互发送DD报文(真正的摘要信息......
  • SPI原理
    什么是SPI?SPI全称为ServiceProviderInterface,是一种服务发现机制。它通过在ClassPath路径下的META-INF/services目录中查找文件,自动加载文件中指定的实现类,并将它们实例化、初始化,然后返回给调用方使用。其设计思想是:面向接口+配置化+反射。SPI的优点松耦合:SPI机制使......
  • AI夏令营-LightGBM的数学原理
    XGBoost提升集成学习模型的性能从基学习器本身入手从误差优化入手集成回归树的误差定义$argminL=\sum_{i=1}^nl(y_i,y_i^\Lambda)+\sum_{k=1}^K\Omega(f_k)$\(y_i\)是实际值,$y_i^\Lambda$是误差\(sl\Omega(f_k)=\gammaT+\frac{1}{2}\lambda\parallelw\p......
  • Log日志的实现原理
    log.info("XXX");打印日志的时候,Log组件会将“写入”动作封装成一个LogEvent事件,而这个事件的具体表现形式由LogFormat和MDC共同控制,Format决定了Log的输出格式,而MDC决定了输出什么内容。LogFormat Log组件定义了日志输出格式,这和我们平时使用“String.format”的方式差不多......