>Java >java지도 시간 >HandlerExecutionChain 클래스 설명 예시

HandlerExecutionChain 클래스 설명 예시

零下一度
零下一度원래의
2017-07-18 14:37:201853검색

HandlerExecutionChain을 설명하기 전에 SpringMVC의 핵심 개발 단계에 대한 일반적인 이해를 해보자:

DispaterServlet을 HandlerExecutionChain 유형의 핸들러 객체에 매핑합니다.

핸들러 객체를 HandlerAdapter의 인스턴스화 객체에 매개변수로 전달합니다. 핸들러 메소드를 호출하면 ModelAndView 객체가 생성됩니다.

ViewResolver 뷰 파서를 통해 이전 단계에서 생성된 ModelAndView를 구문 분석합니다.

DispatcherServlet은 획득한 뷰를 기반으로 사용자에게 뷰를 반환합니다.

HandlerExecutionChain 클래스는 비교적 간단하고 이해하기 쉽습니다.

============================================== == ========================

  HandlerExecutionChain {

=================== === ============================================== === =

다음은 클래스의 일부 속성입니다.

  List<HandlerInterceptor>

========================================= === ============================

 applyPreHandle(HttpServletRequest request, HttpServletResponse response) = (! ( i = 0; i < interceptors.length; i++= (!interceptor.preHandle(request, response,  .interceptorIndex =

=========== === ============================================== === ========

 applyPostHandle(HttpServletRequest request, HttpServletResponse response, ModelAndView mv) = (! ( i = interceptors.length - 1; i >= 0; i--=

    /** * 这个方法只会执行preHandle()方法已经成功执行并且返回true的拦截器中的postHandle()方法。     */void triggerAfterCompletion(HttpServletRequest request, HttpServletResponse response, Exception ex)throws Exception {

        HandlerInterceptor[] interceptors = getInterceptors();if (!ObjectUtils.isEmpty(interceptors)) {for (int i = this.interceptorIndex; i >= 0; i--) {
                HandlerInterceptor interceptor = interceptors[i];try {
                    interceptor.afterCompletion(request, response, this.handler, ex);
                }catch (Throwable ex2) {
                    logger.error("HandlerInterceptor.afterCompletion threw exception", ex2);
                }
            }
        }
    }

위 내용은 HandlerExecutionChain 클래스 설명 예시의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.