2011-03-03 1 views
0

다음은 Struts 2 용 struts.xml 파일의 코드 스 니펫입니다. 아래에서 볼 수있는 것처럼 "basicStack"을 참조하고 다음 몇 줄에서 "prepare"및 "servletConfig"를 참조합니다. struts-default에서 "basicStack"의 정의를 보면 "basicStack"의 일부로 이미 참조되어있는 것처럼 보입니다. 따라서 이미 "basicStack"을 중복되고 필요 없다고 언급 한 후에 참조하지 않을 것입니다. 미리 감사드립니다. 의도는 인터셉터 두 번을 실행 가지고 있다면Struts 2는이 구성이 중복 되었습니까?

<interceptor-ref name="basicStack"> 
    <param name="exception.logEnabled">true</param> 
    <param name="exception.logLevel">info</param> 
</interceptor-ref> 
<interceptor-ref name="servletConfig" />   
<interceptor-ref name="staticParams"/> 
<interceptor-ref name="prepare" /> 
<interceptor-ref name="chain"/> 
<interceptor-ref name="tokenSession"> 

답변

3

스택에 인터셉터가 두 번 있다는 것은 두 번 실행된다는 것을 의미합니다. 이것은 항상 중복되는 것은 아닙니다. 예를 들어, paramsPrepareParamsStack에는 params 인터셉터가 두 번 구성되어 있습니다.

그래서 요격기가 무엇을하는지 알아야합니다. servletConfig 인터셉터는 구현하는 인터페이스에 따라 다양한 액션 속성을 설정합니다. 요청 객체 설정과 같은 작업에 사용됩니다. 그 인터셉터를 두 번 실행하는 것이 도움이 될 수있는 방법을 볼 수 없으므로 나는 추측을 베팅하고 그것이 실제로 중복되어 있다고 말할 것입니다.

제 2의 인터셉터 인 prepare 인터셉터는 동작 클래스의 prepare 메소드가 실행되도록 트리거합니다. 예를 들어, prepare 메소드가 실행하기 위해 요청 오브젝트를 필요로하는 경우와 같이,이 메소드는 유용 할 때 실행될 수 있습니다. 그렇다면 준비 인터셉터에 대한 첫 번째 호출이 중복 될 수 있으며이 스택을 정의한 사람은 전체 스택 자체를 열거하지 않으려 고 할 수 있습니다.

+0

당신이 말하는 것을 기반으로 나에게 좋은 소리가 들려요, 의도는이 두 번 실행하는 것이라고 상상할 수 없습니다. 그러나 제작자가 의도 한 것임을 아는 것은 도움이됩니다. 나는 그 같은 시나리오를 위해 밖으로 나가게 될 것이다. – JasonStoltz

2

그것은 중복이 아니다. 그러나 그럴 것 같지 않습니다.