当前位置: 首页 > news >正文

springmvc执行流程

文章目录

  • 前言
  • 一、springMVC请求执行流程
  • 二、组件说明
      • 以下组件通常使用框架提供实现:
  • 总结


前言

本篇文章是对springmvc的补充
接上篇文章springmvc入门https://blog.csdn.net/l_zl2021/article/details/127120873


一、springMVC请求执行流程

在这里插入图片描述

1.用户发送请求至前端控制器DispatcherServlet

2.DispatcherServlet收到请求调用HandlerMapping处理器映射器。

3.处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。

4.DispatcherServlet通过HandlerAdapter处理器适配器调用处理器

5.执行处理器(Controller,也叫后端控制器)。

6.Controller执行完成返回ModelAndView

7.HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet

8.DispatcherServlet将ModelAndView传给ViewReslover视图解析器

9.ViewReslover解析后返回具体View

10.DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。

11.DispatcherServlet响应用户

二、组件说明

以下组件通常使用框架提供实现:

DispatcherServlet:前端控制器

用户请求到达前端控制器,它就相当于mvc模式中的c,dispatcherServlet是整个流程控制的中心,由它调用其它组件处理用户的请求,dispatcherServlet的存在降低了组件之间的耦合性。

HandlerMapping:处理器映射器

HandlerMapping负责根据用户请求url找到Handler即处理器,springmvc提供了不同的映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。

Handler:处理器

Handler 是继DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler对具体的用户请求进行处理。

由于Handler涉及到具体的用户业务请求,所以一般情况需要程序员根据业务需求开发Handler。

HandlAdapter:处理器适配器

通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。适配器最终都可以使用usb接口连接

ViewResolver:视图解析器

View Resolver负责将处理结果生成View视图,View Resolver首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户。

View:视图

springmvc框架提供了很多的View视图类型的支持,包括:jstlView、freemarkerView、pdfView等。我们最常用的视图就是jsp。

一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给用户,需要由程序员根据业务需求开发具体的页面。

在springmvc的各个组件中,处理器映射器、处理器适配器、视图解析器称为springmvc的三大组件。
需要用户开发的组件有handler、view

因为框架已经默认加载这些组件了,所以我们不需要做任何配置,就可以使用这些组件了。


总结

本篇对springMVC的执行流程进行补充,说明了各个组件的作用

http://www.lryc.cn/news/6469.html

相关文章:

  • SpringMVC(2)
  • Jackson序列化json时null转成空串或空对象
  • 如何将Python的上级目录的文件导入?【from.import】
  • Java实现碧蓝航线连续作战
  • Docker笔记
  • 情人节使用AI TOOL来创建一个甜言蜜语的女伴
  • G-GhostNet(IJCV 2022)原理与代码解析
  • Ethercat系列(5)TWcat3激活过程的协议分析(续1)
  • QT入门Input Widgets之QScrollBar
  • 【ML】基于机器学习的心脏病预测研究(附代码和数据集,多层感知机模型)
  • 工序排序问题--约翰逊法精讲
  • WebDAV之葫芦儿·派盘+网盘精灵
  • 计算机网络期末知识点总结
  • 【Vue3 组件封装】vue3 轮播图组件封装
  • 电力国家(行业)标准目录
  • 如何实现倒序输出
  • 遗留系统的自动化测试策略和实践方法
  • 【Android】系统源码下载及编译
  • 基于HTML实现浪漫情人节表白代码(附源代码)
  • PCL 平面拟合——RANSAC
  • 【Linux之Shell脚本实战】监控系统的磁盘空间使用率
  • 【Python安全编程】Python实现网络主机和端口扫描
  • 四大垃圾回收算法七大垃圾回收器
  • P1217 [USACO1.5]回文质数 Prime Palindromes
  • 用大白话给你科普,到底什么是 API(应用程序编程接口)?
  • 企业电子招采系统源码——信息数智化招采系统
  • 【vnc】Ubuntu20.04+vnc安装和配置(中文输入法)
  • 【排序算法】数据结构排序详解
  • 【docker知识】DockerFile语法 1:注释指令、解释器指令
  • [失业前端恶补算法]JavaScript leetcode刷题top100(一)