SpringMVC

SpringMVC

MVC(Model-View-Controller),模型-视图-控制器

作用

SpringMVC底层就是Servlet,SpringMVC就是对Servlet进行深层次的封装

MVC模式

  • Model表示数据和应用逻辑,可能包括数据库操作等。View是用户所看到的界面,它展示Model中的数据并让用户与其进行交互。Controller负责处理用户请求,从View中接收输入并在Model里面读取或修改数据,负责把模块和视图结合起来

    SpringMVC执行流程

执行流程

SpringMVC执行流程

  1. 用户发送请求到前端调度器(DispatcherServlet)
  2. 调度器收到请求后调用处理器映射器(HandlerMapping)
  3. 处理器映射器根据url找到具体的处理器和拦截器,生成执行链,返回给调度器
  4. 调度器通过处理器适配器(HandlerAdapter)调用具体的处理器(Handler),返回ModelAndView
  5. 调度器将ModelAndView传给视图解析器(ViewReslover)解析,返回视图对象(View)
  6. 调度器渲染视图,把视图和数据结合,响应给用户

组件

  • 前端调度器(DispatcherServlet):接收请求,响应数据,需要程序员配置
  • 处理器映射器(HandlerMapping):通过url查找Handler
  • 处理器适配器(Handler Adapter):执行Handler中的方法
  • 处理器(Handler):业务方法,需要程序员编写
  • 视图解析器(ViewResolver):把ModelAndView解析出给用户看的视图
  • 视图(View):展示给用户看的,需要程序员编写

问题

  1. 调度器(DispatcherServlet)如何获取处理器(Handler)?

    调度器里有一个doDispatch()方法,里面调用了getHandler()方法;在getHandler()里面调用了处理器映射器(HandlerMapping)的getHandler()方法来获取处理器

  2. 调度器如何执行处理器?

    调度器里的doDispatch()方法里,首先通过getHandlerAdapter()方法获取当前处理器的处理器适配器(HandlerAdapter)来做适配,然后执行适配器的handler()方法

  3. 调度器如何解析视图对象(ModelAndView)的?

    调度器里的doDispatch()方法里,调用processDispatcherResult()方法,方法里调用render()方法,render()方法调用resolveViewName(),通过遍历的方式来找和viewName相同的View

  4. 三大组件(HandlerMapping、HandlerAdapter、ViewResolver)是谁初始化的?

    SpringMVC中通过DispatcherServlet中的initStrategies()方法,通过默认配置来找到类所在位置,来初始化组件


SpringMVC
http://xwww12.github.io/2023/05/24/spring/SpringMVC/
作者
xw
发布于
2023年5月24日
许可协议