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
        
        
        
        
        
        
        
        
        
        
  • 相关阅读:
    微信端支付
    flex布局
    最近的一些计划
    工作中遇到的一些小问题
    获取url参数
    localStorage中使用json
    倒计时函数(单个和多条)
    刚进入页面强制刷新
    [模板][倍增] ST算法 RMQ 区间中最大得值
    [思维]奇数码问题
  • 原文地址:https://www.cnblogs.com/rojas/p/6951771.html
Copyright © 2011-2022 走看看