Spring mvc 启动 和 请求分发

Spring mvc 启动 和 请求分发
启动加载:
    abstract class HttpServletBean extends HttpServlet
    void init() 
    initServletBean();

        abstract class FrameworkServlet extends HttpServletBean
        void initServletBean()
        WebApplicationContext initWebApplicationContext()
        onRefresh(wac);
        
            class DispatcherServlet extends FrameworkServlet
            void onRefresh(ApplicationContext context)
            void initStrategies(ApplicationContext context)
            
            initMultipartResolver(context);
            initLocaleResolver(context);
            initThemeResolver(context);
            initHandlerMappings(context);
            initHandlerAdapters(context);
            initHandlerExceptionResolvers(context);
            initRequestToViewNameTranslator(context);
            initViewResolvers(context);
            initFlashMapManager(context);
        
    
    
请求分发:     
      HTTP request-->httpServlet  
        --->class FrameworkServlet ---->doPost() or doGet()
      
        processRequest(HttpServletRequest request, HttpServletResponse response)
        doService(request, response);
        
           class DispatcherServlet extends FrameworkServlet
           void doService(HttpServletRequest request, HttpServletResponse response)
           doDispatch(request, response);
                  
           // Actually invoke the handler.
            mv = ha.handle(processedRequest, response, mappedHandler.getHandler());
            
             SimpleControllerHandlerAdapter implements HandlerAdapter
             
             ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler)
                   ((Controller) handler).handleRequest(request, response);
                   
                用户在使用时,实现了 AbstractController.handleRequestInternal()
                或者    重写 Controller handleRequest()             
                   
                      
             
             
             ha 使用哪个Adapter ? 一般需要在配置文件中写明 
             <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
             <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
             
             <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>  
             <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
             
             下面这个文件中会自动加载
             /org/springframework/web/servlet/DispatcherServlet.properties

    
    org.springframework.web.servlet.HandlerMapping=org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,\
    org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping

    org.springframework.web.servlet.HandlerAdapter=org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter,\
    org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter,\
    org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter
    
    
    
    
    
    
    
    
    
    

 

posted on 2017-06-06 15:21  rojas  阅读(356)  评论(0编辑  收藏  举报