SpringMVC的执行流程:(网上版本不一,但是主要思想是一样的)
- 用户发送Request请求,由前端控制器DispatcherServlet拦截。
- DispatcherServlet收到请求,调用处理器映射器HandlerMapping。
- 处理器映射器根据请求URL找到具体的处理器,并且返回执行链HandlerExecutionChain(包括处理器对象和处理器拦截器)一并返回给DispatcherServlet。
- DispatcherServlet根据返回的Handler去请求处理器适配器HandlerAdapter执行。如:数据格式转换、数据验证、参数封装等。
- Handler处理器(Controller)进行执行。
- 返回ModelAndView。
- 处理器适配器(HandlerAdapter)将Handler执行结果ModelAndView返回到DispatcherServlet。
- DispatcherServlet将ModelAndView传给ViewResolver(视图解析器)进行解析。
- ViewResolver(视图解析器)解析完成之后返回具体的View。
- DispatcherServlet将View进行视图渲染(即将模型数据Model填充到视图中)
- DispatcherServlet响应用户。
后续再从源码层面描述。。。