第12章:SpringMVC执行流程

news/2024/11/29 6:51:18/

一、SpringMVC执行流程

1.SpringMVC常用组件

①、DispatcherServlet:前端控制器,框架提供。

作用:统一处理请求和响应,整个流程的控制中心,由它调用其他组件处理用户的请求

②、HandlerMapping:处理器映射器,框架提供

作用:根据请求的url、method等信息查找Handler即控制器方法

③、Handler:处理器,工程师开发

作用:在DispatcherServlet的控制下对Handler对具体的用户请求进行处理

④、HandlerAdapter:处理器适配器,框架提供

作用:通过HandlerApater对处理器(控制器方法)进行执行

⑤、ViewResolver:视图解析器,框架提供。

作用:进行视图解析,得到相应的视图。ThymeleafView、InternalResourceView、RedirectView

⑥、View:视图

作用:将模型的数据通过页面展现给用户

2.SpringMVC的执行流程

1.用户向服务器发送请求,请求被SpringMVC前端控制器的DispatcherServlet捕获

2.DispatcherServlet对请求URL进行解析,得到请求资源标识符URI,判断请求URI对应的映射。

不存在:

  • 判断是否配置了mvc:default-servlet-handler,如果没有配置,404
  • 配置后(静态资源:js,css,html)找不到404

存在

  • 根据URI,调用HandlerMapping获得该Handler配置的所有对象(包括Handler对象以及Handler对象的拦截器)最后以HandlerExecutionChain执行链对象的形式返回。
  • DispatcherServlet 根据获得的Handler,选择一个合适的HandlerAdapter。
  • 如果成功获得HandlerAdapter,此时将开始执行拦截器的preHandler(…)方法【正向】
  • 提取Request中的模型数据,填充Handler入参,开始执行Handler(Controller)方法,处理请求。在填充Handler的入参过程中,根据你的配置,Spring将帮你做一些额外的工作:
    • a) HttpMessageConveter: 将请求消息(如Json、xml等数据)转换成一个对象,将对象转换为指定的响应信息

    • b) 数据转换:对请求消息进行数据转换。如String转换成Integer、Double等

    • c) 数据格式化:对请求消息进行数据格式化。 如将字符串转换成格式化数字或格式化日期等

    • d) 数据验证: 验证数据的有效性(长度、格式等),验证结果存储到BindingResult或Error中

  • Handler执行完成后,向DispatcherServlet 返回一个ModelAndView对象。
  • 此时将开始执行拦截器的postHandle(…)方法【逆向】。
  • 根据返回的ModelAndView(此时会判断是否存在异常:如果存在异常,则执行HandlerExceptionResolver进行异常处理)选择一个适合的ViewResolver进行视图解析,根据Model和View,来渲染视图。
  • 渲染视图完毕执行拦截器的afterCompletion(…)方法【逆向】。
  • 将渲染结果返回给客户端。

http://www.ppmy.cn/news/261227.html

相关文章

uniapp和springboot微信小程序开发实战:开发环境准备以及技术选型

文章目录 开发工具STSHBuilder X其他工具技术选型前端开发vueelementUI后端springbootmybatisplusJWT和shiro开发工具 STS STS是开发springboot项目的利器,是Eclipse的一个版本,全称是SpringToolSuite STS下载地址 HBuilder X 下载地址

学计算机类专业要什么牌子笔记本,请问学计算机专业的大学生买什么牌子的笔记本比较合适...

宁宁是大卟點 回答数:2 | 被采纳数:46 2019-03-26 12:28:47 办公用途,平面设计类吃处理器的能力。游戏,3d设计类吃显卡能力。不管那种需求,内存容量都是需要有合理的选择(类如看机器是否支持扩展)。不管台式本子都一…

笔记本电脑购买指南与建议-知识点介绍

前言 刚进入学校的新生们一大笔开销就是买笔记本了,但是很多同学不知道电脑的配置怎么样,不清楚各种显卡,内存什么配置好,又不知道价位是否是同等价位当中性价比最高的,那么今天我们就简单介绍下笔记本的各种配置 1C…

学python笔记本什么牌子好且实惠实用_想自学python,应该买什么牌子的笔记本?...

建议入手:macpro。个人不推荐买联想系列的电脑,thinkpad不要入手,原因: 1、python变成主要是命令行,各种命令和脚本,在mac终端非常方便。 2、mac电脑续航久、品质有保障 3、联想系列用1-2年就卡的不行 …

DevOps实践:持续交付和自动化部署的最佳实践

引言 今天给大家分享一篇有关DevOps实践的文章。 在当今快节奏的软件开发环境中,为了保持竞争力,加速交付和提高质量已经成为必须要做到的事情。而DevOps方法论则是解决这些问题的一种综合性方案。 本文将为您介绍DevOps的最佳实践,包括持…

CnOpenData电商平台交易数据数据

一、数据简介 电子商务是网络化的新型经济活动,是推动“互联网+”发展的重要力量,是新经济的主要组成部分。通过电商平台获取的电商交易平台数据可以及时统计、监测数据,全方位跟踪分析电子商务市场的发展情况和发展环境&#xff…

OpenAI | Let’s Verify Step by Step详细解读

一、概述 title:Let’s Verify Step by Step 论文地址:https://arxiv.org/abs/2305.20050 代码:GitHub - openai/prm800k: 800,000 step-level correctness labels on LLM solutions to MATH problems 1.1 Motivation 近期大模型的出现极…

蹭个高考热度,中国人民大学与加拿大女王大学金融硕士项目给你更多的选择

今日各大平台热搜都被“高考”霸屏,朋友圈里到处都是高考的祝福。期待莘莘学子都将交上满意的答卷,考出理想的未来。针对职场上的我们而言高考已是过去时,但知识的力量却是无穷的,在职的我们依然可以向上生长,中国人民…