zoukankan      html  css  js  c++  java
  • 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
        
        
        
        
        
        
        
        
        
        
  • 相关阅读:
    linux下如何查看cpu信息
    Linux更换HBA卡后重新扫盘指令
    oracle 11gR2 RAC存储迁移
    Data Migration from Various Storage Types Using EMC VPLEX and EMC RecoverPoint Technologies
    【11grac】Oracle RAC 更换存储实验
    Oracle RAC 11GR2更换主机不换存储--ASM磁盘组异机挂载 推荐 原创
    ELK(Elasticsearch + Logstash + Kibana) 日志分析平台
    Ogg For Bigdata 同步Oracle数据到KAFKA(包括初始化历史数据)
    stm32cubemx+clion环境搭建
    stdarg宏与实现stm32printf串口打印
  • 原文地址:https://www.cnblogs.com/rojas/p/6951771.html
Copyright © 2011-2022 走看看