springmvc的执行流程_「面试高频题」SpringMVC执行流程

本文详细剖析了SpringMVC的执行流程,从核心的前端控制器DispatcherServlet开始,讲解了后端控制器Controller和spring-mvc.xml配置文件的作用。SpringMVC的执行流程包括:DispatcherServlet接收请求,通过HandlerMapping找到合适的Controller,执行Handler并利用HandlerAdapter处理,经过拦截器的前后处理,最后通过ModelAndView渲染视图并响应给客户端。同时,文中还介绍了SpringMVC内部组件的初始化加载过程。
摘要由CSDN通过智能技术生成

9aaee0263344eab5f93592050e5e3bc5.png

SpringMVC执行流程

SpringMVC概述

Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框架。

SpringMVC执行流程概括

SpringMVC框架固然强大,但是其执行流程更是妙不可言。所以我们这次要用一个简单的例子去深究一下SpringMVC的底层执行流程!
如下是SpringMVC的执行流程梗概图,我会在后面的底层流程剖析中重点提到梗概图中的这几个零件,以及它们的作用!

SpringMVC执行流程梗概图(切记:该图只是梳理思路,并不特别严谨,请谅解)

06160e23bd24fa49d5db493f8905cd92.png

springMVC执行流程

SpringMVC的重要组件(可视化组件)

既然,我们要选择剖析SpringMVC底层执行流程,那肯定是要先分析我们能所看到表面的MVC重要组件。这样我们分析完可视组件后,就能找到分析SpringMVC底层执行流程的入口,所以分析它的重要组件显得更是重要!

SpringMVC的重要组件是由核心的前端控制器(web.xml)、后端控制器(Controller)和spring-mvc.xml配置文件组成。

  • 核心的前端控制器: 作为MVC框架,首先要解决的就是如何能收到请求。所以MVC框架大都会设计一款前端控制器(入口或者说起点),选型在Servlet或Filter两者之一,由前端控制器来最率先的工作,接收请求。在SpringMVC中,也不例外,前端控制器的选型确定为Servlet(DispatcherServlet),此前端控制器在接收请求后,还会负责SpringMVC的核心调度管理,所以既是前端又是核心。
  • 后端控制器: 后端控制器为Controller,等价于之前定义的Servlet。MVC框架中,后端控制器也是必不可少的重要组件之一。因为它接收了用户请求的大量数据参数对象(或Json)存储在域中方便页面(JSP)取值,或是携带着这些数据返回所需要跳转(重定向或请求转发)的页面。这里值得注意的是,后端控制器本质并不是一个普通的Servlet,也不是BaseServlet,它只是一个普通的类,里面却像曾经的BaseServlet一样可以拥有很多个方法,这些方法在SpringMVC中成为一个个Handler(换汤不换药,本质仍然)。所以在MVC模式的执行流程环节中,后端控制器控制着页面的跳转和数据的传递,在这里也有着很高的地位。
  • spring-mvc.xml配置文件: 该配置文件配置着许多在执行过程中需要加载的组件,比如:注解扫描器、注解扫描驱动、试图解析器、静态资源处理器、异常解析器、拦截器、上传解析器等等,如果我们要使用这些组件,就需要在该配置文件中注入这些组件的相关配置,注入配置后由SpringMVC工厂在执行过程中加载这些组件,以达成我们使用这些组件的目的。所以这也是它受人青睐的原因。

SpringMVC执行流程剖析

上述得知,我们执行流程剖析的入口既是核心的前端控制器,即web.xml,那我们有资格了解该前端控制器中配置了什么!如下:

前端控制器

f61ee445fcdeefcea5b5693595d3c800.png

由上图所知,前端控制器中所包含的即是同时启动SpringMVC工厂和Spring工厂,让两个工厂同时运作处理请求,并作出响应。既然要剖析SpringMVC的底层执行流程,那我们要从加载SpringMVC工厂的DispatcherServlet说起。首先进入到DispatcherServlet中,查看源代码所有方法,如下图所示:

DispatcherServlet源码所有方法

d213dfec5abdb082e46ef8f78d88145d.png

Di

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值