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
        
        
        
        
        
        
        
        
        
        
  • 相关阅读:
    VC++SDK编程——字体及位置示例
    VC2008以资源形式实现多语言版本(非Unicode) .转
    跟着编程之美学算法——最长递增子序列(转)
    跟着编程之美学算法——最长公共子序列
    MFC的多国语言界面的实现
    随意输入N个英文字符,找出其中最长连续的排列。
    C++读写EXCEL文件方式比较 .
    操作EXCEL和符号分隔文本的类CSpreadSheet .
    每个程序员都必读的12篇文章
    VC项目配置详解
  • 原文地址:https://www.cnblogs.com/rojas/p/6951771.html
Copyright © 2011-2022 走看看