SpringMVC超级详细讲解
SpringMVC:
一、SpringMVC是什么?
springmvc是一个功能强大且灵活的,基于Spring框架的一个Web框架。
springmvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合。
springmvc是一个基于mvc的web框架。
二、SpringMVC核心组成
6大组件:
1、 DispatcherServlet前端控制器
作用接收请求,响应结果,相当于转发器,中央处理器。
有了DispatcherServlet减少了其它组件之间的耦合度。
(DispatcherServlet几乎是web.xml中必须配置的一个Servlet,绝大部分情况下也只需要配置这个Servlet就够用了。它有什么作用呢?顾名思义,它是一个派发器,即对任意一个web请求都会根据一定的规则派发到对应的处理器上处理,并最终将结果返回。)
2、HandlerMapping处理器映射器
作用:根据请求的url查找Handler
3、HandlerAdapter处理器适配器
作用:按照特定规则(HandlerAdapter要求的规则)去执行Handler
4、Handler处理器(需要程序员开发)
注意:编写Handler时按照HandlerAdapter的要求去做,这样适配器才可以去正确执行Handler
5、ViewResolver视图解析器
作用:进行视图解析,根据逻辑视图名解析成真正的视图(view)
6、View视图 (需要程序员开发jsp)
View是一个接口,实现类支持不同的View类型(jsp、freemarker、pdf…)
三、SpringMVC项目架构图
四、SpringMVC架构原理解析
第一步:(浏览器/客户端)发起请求到前端控制器(DispatcherServlet)
第二步:前端控制器请求HandlerMapping查找 对应处理器Handler ,可以根据xml配置、注解进行查找
第三步:处理器映射器向前端控制器返回找到的处理器Handler(相当于controller类中方法)
第四步:前端控制器调用处理器适配器去执行处理器Handler
第五步:处理器适配器去执行Handler
第六步:Handler执行完成后给适配器返回ModelAndView
第七步:处理器适配器向前端控制器返回ModelAndView
ModelAndView是SpringMVC框架的一个底层对象,包括 Model和view
第八步:前端控制器请求视图解析器去进行视图解析
根据逻辑视图名解析成真正的视图(jsp)
第九步:视图解析器向前端控制器返回View
第十步:前端控制器进行视图渲染
视图渲染将模型数据(在ModelAndView对象中)填充到request域
第十一步:前端控制器向用户响应结果
五、补充1
从宏观角度考虑,DispatcherServlet是整个Web应用的控制器;
从微观角度考虑,Controller是单个Http请求处理过程中的控制器,
而ModelAndView是Http请求过程中返回的模型和视图。
六、补充2
1. DispatcherServlet本身是类
2. HandlerMapping接口常用的实现类
RequestMappingHandlerMapping、BeanNameUrlHandlerMapping、SimpleUrlHandlerMapping
(学习连接:https://www.cnblogs.com/tengyunhao/p/7658952.html)
3. HandlerAdapter接口常用的实现类
RequestMappingHandlerAdapter、HttpRequestHandlerAdapter、SimpleControllerHandlerAdapter
4. Handler接口常用的实现类
HttpRequestHandler
5. ViewResolver接口常用的实现类
InternalResourceViewResolver、UrlBasedViewResolver、XmlViewResolver、BeanNameViewResolver、ResourceBundleViewResolver
(学习连接1:https://blog.****.net/w372426096/article/details/78431547)
(学习连接2:https://blog.****.net/niqinge/article/details/79130106)
6. View接口常用的实现类
RedirectView、FreeMarkerView、VelocityView、JstlView
(学习连接:https://blog.****.net/fengyuhan123/article/details/79723310)