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

SpringMvc执行流程(含过滤器Filter+拦截器interceptor)

目录

1.Mvc的概念

2.SpringMvc的概念

3.SpringMvc的核心组件

4.SpringMvc的执行流程

5.SpringMvc+Filter+Interceptor执行流程


一、Mvc的概念

        Mvc(Model View Controller):Mvc是一种设计规范,它将数据、视图、业务逻辑代码进行分离,降低代码的耦合,实现三层代码功能的解耦。

1.Model(模型)

        数据模型,提供要展示数据,包含数据和行为。现一般分开进行表示,服务层Service和数据数据层Dao.

2.View(视图)

        进行内容的展示。例如:用户界面等。

3.Controller(控制器)

        起调度的作用。接收用户请求,委托模型进行处理,处理完成返回视图进行展示。

二、SpringMvc的概念

        Spring MVC是Spring Framework的一部分,是基于Java实现MVC的轻量级Web框架

 1.SpringMvc的特点

Spring MVC 拥有强大的灵活性,非侵入性和可配置性。
Spring MVC 提供了一个前端控制器 DispatcherServlet ,开发者无须额外开发控制器对象。
Spring MVC 分工明确,包括控制器、验证器、命令对象、处理器映射器、视图解析器等,每一个功能实现由一个专门的对象负责。
Spring MVC 可以自动绑定用户输入,并正确地转换数据类型。
Spring MVC 使用一个名称 / 值的 Map 对象实现更加灵活的模型数据类型。
Spring MVC 内置了常见的校验器,可以检验用户输入,如果校验不同,则重定向回输出表单。输入校验是可选的,并且支持编程方法及声明方式。
Spring MVC 支持国际化,支持根据用户区域显示多国语言,并且国际化的配置非常简单。
Spring MVC 支持多种视图技术,最常见的由JSP技术以及其他技术,包括 Velocity 和 FreeMarker。
Spring MVC 提供了一个简单而强大的JSP标签库,支持数据绑定功能,使得编写JSP页面更加容易。

三、SpringMvc的核心组件

DispatcherServlet:前端控制器。接收请求、返回响应
HandlerMapping:处理器映射器。根据请求URL,找到对应的处理器
HandlerAdapter:处理器适配器。适配调用具体的处理器,执行处理器请求方法,处理完成返回ModelAndView对象
Handler:处理器。具体业务逻辑的处理
ViewResolver:视图解析器。将ModelAndView进行视图解析,返回View对象
View:视图。将视图进行渲染,支持不同类型:JSP、FreeMarker、Thymeleaf

四、SpringMvc执行流程

1.用户发送请求,请求到前端控制器DispatcherServlet;

2.前端控制器DispatcherServlet调用HandlerMapping处理器映射器,HandlerMapping处理器映射器根据请求URL找到对应的处理器,并返回给DispatcherServlet;

3.前端控制器DispatcherServlet调用处理器适配器HandlerAdapter去适配并调用具体的处理器Handler处理请求;

4.处理器Handler处理具体的业务逻辑,处理完成后返回给处理器适配器HandlerAdapter一个ModelAndView对象,处理器适配器HandlerAdapter将其返回给前端控制器DispatcherServlet;

5.前端控制器DispatcherServlet将ModelAndView传给视图解析器ViewResolver进行视图解析,并返回一个View对象给前端控制器DispatcherServlet;

6.前端控制器DispatcherServlet将视图进行渲染,并返回给用户。

五、SpringMvc+Filter+Interceptor执行流程

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

相关文章:

  • 【UDS基础】简单介绍“统一诊断服务“
  • 深度学习框架TensorFlow.NET之数据类型及张量2(C#)
  • Pandas指定多列组合形成新列
  • 硕鼠——视频下载利器
  • Android 13.0 Launcher3 app图标长按去掉应用信息按钮
  • 10 DETR 论文精读【论文精读】End-to-End Object Detection with Transformers
  • 高数笔记05:不定积分与定积分
  • 【代码随想录】算法训练计划13
  • Python图像处理之OpenCV模块
  • 动态规划-丑数
  • 【MogDB/openGauss的三种函数稳定性关键字】
  • java-对Integer.MAX_VALUE做加法
  • 【学习笔记】[COCI2018-2019#1] Teoretičar
  • 64位Office API声明语句第112讲
  • C++ day3作业
  • 蓝桥杯官网填空题(方格计数)
  • 【系统架构设计】计算机公共基础知识: 6 知识产权与标准化
  • 【新】致远OA从前台XXE到RCE漏洞分析
  • 宠物领养系统jsp+servlet+mysql
  • MySQL 数据库安全性练习题
  • 如何使用Node.js快速创建HTTP服务器并实现公网访问本地Server
  • zigbee路灯无线通讯机制
  • asp.net docker-compose添加kafka和redis和zookeeper
  • 2024上海国际人工智能展(CSITF)“创新驱动发展·科技引领未来”
  • 汽车标定技术(三)--XCP协议如何支持测量功能
  • [c++]你最喜爱的stringstream和snprintf性能深入剖析
  • windows 用vs创建cmake工程并编译opencv应用项目生成exe流程简述
  • QML 仪表盘小示例
  • 力扣206. 反转链表
  • 深度学习之基于Tensorflow卷积神经网络花卉识别系统