springmvc执行原理(基于组件)

bilibili视频教程:https://www.bilibili.com/video/BV1mE411X7yp?p=165&spm_id_from=pageDriver

组件

springmvc是基于组件方式执行流程的、以下执行流程涉及到5大组件。

  1. 前端控制器DispatcherServlet
    是最重要的组件,作用相当于人的大脑,用于接收请求、响应结果,相当于转发器,中央处理器,指挥着springmvc中的其他组件配合完成某个用户发来的请求。并且DispatcherServlet降低了组件之间的耦合性,就如人的大脑指挥着脚走路,嘴吃东西,眼睛看东西一样,脚嘴眼完全是不同的器官他们各自独立,互不影响。
  2. 处理器映射器HandlerMapping
    作用:根据请求的url查找Handler然后返回给DispatcherServlet控制器
    这个是根据用户请求的url找到Handler即处理器也就是我们编写的controller。
  3. 处理器适配器HandlerAdapter
    作用:用于执行HandlerMapping返回给DispatcherServlet控制器的处理器Handler的,执行完之后会返回一个ModelAndView给控制器。
  4. 处理器Handler
    也就是我们自己写的controller
  5. 视图解析器View resolver
    作用:进行视图解析,根据逻辑视图名解析成真正的视图(view)
  6. 视图View
    View是一个接口,实现类支持不同的View类型(jsp、freemarker、pdf…)

其中处理器Handler(Controller),视图View(JSP等)要我们自己编写。
前端控制器DispatcherServlet,在spring配置文件中配置InternalResourceViewResolver
处理器映射器HandlerMapping,处理器适配器HandlerAdapter在springmvc配置文件中开启注解<mvc:annotation-driven> </mvc:annotation-driven>就会自动配置好

执行原理(面试必问)

根据下图
在这里插入图片描述

  1. 假如用户发送一个请求给我们用springmvc编写的系统、这时这个请求最先被前端控制器DispatcherServlet接收到。
  2. DispatcherServlet接收到请求后他自己不能处理这个请求他只能交给其他组件处理,他会首先找到请求的是哪个处理器也就是我们编写的Controller,这个时候就会调用处理器映射器HandlerMapping去查找是哪个处理器
  3. 找到之后返回给DispatcherServlet前端控制器
  4. 找到是哪个处理器之后就要执行这个处理器了,这时候就会将处理器交给处理器适配器HandlerAdapter执行
  5. Handler经过是配置器后执行
  6. Handler执行完之后会返回一个ModelAndView给处理适配器HandlerAdapte
  7. 适配器HandlerAdapte再返回给前端控制器DispatcherServlet
  8. 同样前端控制器DispatcherServlet无法处理ModelAndView这里就要交个视图解析去组件去处理了,
  9. 处理完之后会返回一个视图View给前端控制器DispatcherServlet。
  10. 前端控制器DispatcherServlet拿到View之后会交给组件视图View进行渲染,数据填充。
  11. 最终将渲染好的视图结果返回给用户。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值