1. SpringMVC的执行流程
先给出执行流程的示意图:
- 浏览器发出请求到达中央处理器
- (2-3步)DispatchServlet接收到请求后,把请求交给处理器映射器,处理器映射器是springmvc框架中的一种对象,框架把视线了HandlerMapping接口的类均叫做处理器映射器(在框架中是多个)。
处理器映射器的作用:根据请求从springmvc容器中获取处理器对象即:
MyController myController = ct.getBean(“xxx.do”);
处理器映射器把获得的controller对象放在执行器执行链当中,这也是一个类:HandlerExecutionChain.java。
HandlerMapping.java:
@Nullable
HandlerExecutionChain getHandler(HttpServletRequest var1) throws Exception;
12
类实现类很多。现在我们使用注解了之后就方便了很多。
HandlerExecutionChain.java:
//处理器(MyController)
private final Object handler;
//拦截器
@Nullable
private HandlerInterceptor[] interceptors;
123456
- (4-7步)中央处理把HandlerExecutionChain交给处理器适配器(多个),适配器是springmvc中的组件,只要实现了HandlerAdapter接口的均叫处理器适配器。会调用handle方法,具体实现就是myController中的相应方法。得到ModelAndView对象(这个ModelAndView重新回到DispatchServlet中央调度器手中)
HandlerAdapter的实现类:(和映射器一一对应)
\4. (8-9) 视图解析器,使用前后缀配成实体,使用View类来表示
比如:RedirectView 对象代表的就是的就是redirect:/EEB-INF/view/first.jsp这里的视图。
然后把view对象返回给中央调度器DispatchServlet
- DispatchServlet把view对象,调用view对象自己的方法相应给页面。
2. DispatchServlet中的重要节点
DispatchServlet中的重要节点:
的到执行链:
调用适配器:
3. 总结
这个在面试过程中用的多。开发中实际应用不大。
各个器君合DispatchServlet中央调度器交互,各自之间没有耦合!
建议源码有余力详细研究!