• 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
        
        
        
        
        
        
        
        
        
        
  • 相关阅读:
    2019.10.31 答辩回来后;
    2019.10.22
    2019.10.21 上周总结+今天
    2019.10.20 没有人可以阻挡自己努力,男朋友也不可以。少情感,多学习;;多夸夸他肯定他
    2019.10.19 干什么? 不要纠结了于下手什么了 趁还年轻 去做吧!!
    2019.10.16 每天问自己 三遍 或者更多:我收获了什么?我收获了什么?我收获了什么???
    Java 错误:Constructor call must be the first statement in a constructor
    2019.10.14 解决讨好型人格;时间管理划分等级+设定时间上限
    2019.10.14 今天看到的业务大佬的肺腑之言
    放几张吴悠校园行
  • 原文地址:https://www.cnblogs.com/rojas/p/6951771.html
Copyright © 2020-2023  润新知