SpringMVC
SpringMVC
MVC(Model-View-Controller),模型-视图-控制器
作用
SpringMVC底层就是Servlet,SpringMVC就是对Servlet进行深层次的封装
MVC模式:
Model表示数据和应用逻辑,可能包括数据库操作等。View是用户所看到的界面,它展示Model中的数据并让用户与其进行交互。Controller负责处理用户请求,从View中接收输入并在Model里面读取或修改数据,负责把模块和视图结合起来
执行流程
- 用户发送请求到前端调度器(DispatcherServlet)
- 调度器收到请求后调用处理器映射器(HandlerMapping)
- 处理器映射器根据url找到具体的处理器和拦截器,生成执行链,返回给调度器
- 调度器通过处理器适配器(HandlerAdapter)调用具体的处理器(Handler),返回ModelAndView
- 调度器将ModelAndView传给视图解析器(ViewReslover)解析,返回视图对象(View)
- 调度器渲染视图,把视图和数据结合,响应给用户
组件
- 前端调度器(DispatcherServlet):接收请求,响应数据,需要程序员配置
- 处理器映射器(HandlerMapping):通过url查找Handler
- 处理器适配器(Handler Adapter):执行Handler中的方法
- 处理器(Handler):业务方法,需要程序员编写
- 视图解析器(ViewResolver):把ModelAndView解析出给用户看的视图
- 视图(View):展示给用户看的,需要程序员编写
问题
调度器(DispatcherServlet)如何获取处理器(Handler)?
调度器里有一个doDispatch()方法,里面调用了getHandler()方法;在getHandler()里面调用了处理器映射器(HandlerMapping)的getHandler()方法来获取处理器
调度器如何执行处理器?
调度器里的doDispatch()方法里,首先通过getHandlerAdapter()方法获取当前处理器的处理器适配器(HandlerAdapter)来做适配,然后执行适配器的handler()方法
调度器如何解析视图对象(ModelAndView)的?
调度器里的doDispatch()方法里,调用processDispatcherResult()方法,方法里调用render()方法,render()方法调用resolveViewName(),通过遍历的方式来找和viewName相同的View
三大组件(HandlerMapping、HandlerAdapter、ViewResolver)是谁初始化的?
SpringMVC中通过DispatcherServlet中的initStrategies()方法,通过默认配置来找到类所在位置,来初始化组件
SpringMVC
http://xwww12.github.io/2023/05/24/spring/SpringMVC/