一、重要类解释
1,DispatcherServlet:前端控制器,页面发起请求时会将request提交至DispatcherServlet。在web项目中DispatcherServlet处于web.xml中的servlet,项目启动时会将此类加载。spring-mvc.xml会作为此类的init-param(初始化参数)被加载。
2、HandlerMapping :处理器映射器,通过扩展处理器映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。程序启动的时候会将所有的handlerMapping加载进handlerMappings(DispatcherServlet的一个属性)我知道的共有4种1、RequestMappingHandlerMapping 2、BeanNameUrlHandlerMapping 3、SimpleUrlHandlerMapping 4、DefaultAnnotationHandlerMapping。
3、HandlerExecutionChain :处理器执行链 由某一具体处理器(其对应某controller中的某个具体方法)+多个拦截器(interceptor 配置于spring-mvc.xml文件中)组成。
4,HandlerAdapter:处理器适配器,通过扩展处理器适配器,支持更多类型的处理器,程序启动的时候会将多有的handleradapter加载进handlerAdapters (DispatcherServlet的一个属性)我知道的有3种 1、RequestMappingHandlerAdapter 2、HttpRequestHandlerAdapter 3、SimpleControllerHandlerAdapter。
5、ModelAndView:模型视图
二、springMVC执行过程
1、页面发起请求至dispatcherservlet
2、dispatcherservlet根据请求(request)获取 HandlerExecutionChain
2.1获取HandlerExecutionChain的过程:通过匹配不同的handlerMappings去执行对应的getHandler()方法,并将request作为参数 传入,如果返回的值不为空及为HandlerExecutionChain并将其返回。
3、dispatcherservlet通过HandlerExecutionChain获取HandlerAdapter。
4、dispatcherservlet通过HandlerExecutionChain执行其链中拦截器的prehandle()方法
5、dispatcherservlet通过HandlerAdapter执行具体的处理器(用户自己编写的controller中的method)并得到ModelAndView
6、dispatcherservlet通过HandlerExecutionChain执行其链中拦截器的postHandle()方法
7、dispatcherservlet进行视图渲染
8、dispatcherservlet返回视图给用户(界面)