SpringMVC执行流程

SpringMVC是spring容器中的子容器,只负责Controller层相关对象的管理。


核心组件:

    1.前端控制器:DispatcherServlet -> 实现请求的流转。

    2.处理器映射器:HandlerMapping -> 实现了请求路径方法之间的映射。在SpringMVC启动时,会使用map的数据结构:key为URL地址, value为Method对象(包名.类名.方法名)的形式完成映射,当请求URL在map中存在key时,会获取对应的Method对象。

    3.处理器适配器:HandlerAdapter  ->  内部有很多个处理器,针对不同用户的请求,调用不同的处理器完成任务。

    4.试图解析器:用于页面路径拼接,目前很少用到了


执行流程:

    1.浏览器发起请求

    2. DispatcherServlet  获取到请求,将请求转发至handlerMapping。DispatcherServlet 只负责请求的转发和响应,不做任务业务的处理。

    3.  HandlerMapping接收到DispatcherServlet的请求后,查询自己维护的map,

            =》如果请求URL不在map的key中,则该程序不能处理此请求,返回给前端响应,404。

            =》如果请求URL存在于key中,则说明请求可以执行,将该Method对象返回给DispatcherServlet 。

    4.DispatcherServlet 将 HandlerMapping返回的Method对象转发给HandlerAdapter执行。

    5.HandlerAdapter根据方法的类型(xml配置文件/ 注解 / 其他方法),HandlerAdapter在自己内部众多的处理器中挑出最为合适的处理器至执行该方法。当处理器执行该方法时,Controller层中的方法也会开始执行(代理模式),标识业务的开始,业务结束后,将最终的处理结果通过ModelAndView(Model:代表服务器返回的业务数据  View:服务器端返回的页面名称)对象进行包装返回给DispatcherServlet。 

    6. 将View中的数据进行解析,拼接一个完整的路径。

    7.将数据与页面进行绑定渲染。

    8. 由于现在流行前后端分离,所以SpringMVC省略了视图解析和试图渲染,只有前5步。使用注解@ResponseBody(将服务器返回的业务数据转换为JSON返回)省略6-7步

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容