zoukankan      html  css  js  c++  java
  • springMVC 拦截器源码解析

    直接上源码

    //doDispatch方法  
    //1、处理器拦截器的预处理(正序执行)  
    HandlerInterceptor[] interceptors = mappedHandler.getInterceptors();  
    if (interceptors != null) {  
        for (int i = 0; i < interceptors.length; i++) {  
        HandlerInterceptor interceptor = interceptors[i];  
            if (!interceptor.preHandle(processedRequest, response, mappedHandler.getHandler())) {  
                //1.1、失败时触发afterCompletion的调用  
                triggerAfterCompletion(mappedHandler, interceptorIndex, processedRequest, response, null);  
                return;  
            }  
            interceptorIndex = i;//1.2、记录当前预处理成功的索引  
    }  
    }  
    //2、处理器适配器调用我们的处理器  
    mv = ha.handle(processedRequest, response, mappedHandler.getHandler());  
    //当我们返回null或没有返回逻辑视图名时的默认视图名翻译(详解4.15.5 RequestToViewNameTranslator)  
    if (mv != null && !mv.hasView()) {  
        mv.setViewName(getDefaultViewName(request));  
    }  
    //3、处理器拦截器的后处理(逆序)  
    if (interceptors != null) {  
    for (int i = interceptors.length - 1; i >= 0; i--) {  
          HandlerInterceptor interceptor = interceptors[i];  
          interceptor.postHandle(processedRequest, response, mappedHandler.getHandler(), mv);  
    }  
    }  
    //4、视图的渲染  
    if (mv != null && !mv.wasCleared()) {  
    render(mv, processedRequest, response);  
        if (errorView) {  
            WebUtils.clearErrorRequestAttributes(request);  
    }  
    //5、触发整个请求处理完毕回调方法afterCompletion  
    triggerAfterCompletion(mappedHandler, interceptorIndex, processedRequest, response, null); 
  • 相关阅读:
    mp3播放时间
    图片生成视频
    语音合成服务
    360p以上
    实现文字转语音功能
    字幕格式
    音频格式
    视频格式
    微信发朋友圈 -- 群营销素材同步
    FourCC
  • 原文地址:https://www.cnblogs.com/stevehu1231/p/8977792.html
Copyright © 2011-2022 走看看