visit count 3202463
RSS2.0
Artszen.org
+more Notice...
2010-01-15
JBoss User Group 오프라인 무료 교육
2009-05-26
소프트웨어진흥원 주관 POJO 기반의 OpenSource 웹 개발 프레임워크 실무 Workshop 과정 1차가 5월23일 시작되었습니다.
2009-05-13
세미나 개발 작업 진행
2009-05-13
컬럼 개발 작업 진행
2009-05-13
태그스토리 개발작업 진행
교육 안내
- 소프트웨어진흥원 2009년 맞춤형 S/W 인력양성 사업

Link Sites...
Apache Foundation
Struts
iBatis
Forrest
AppFuse
Prototype
Eclipse
TheServerSide
jBoss
jBoss jBPM
Artszen Software
인기 태그
스트럿츠2
struts2
servlet
서블릿
스트럿츠2 태그
struts2 tag
control tag
일반 태그
컨트롤 태그
generic tag
tag
FilterDispatcher
jsp
Action
struts2.0.9
액션
필터 디스패처
lifecycle
result
리절트
 
Struts2
defaultStack에 원하는 인터셉터를 추가한 후 이를 기본 인터셉터 스택으로 정하는 방법 hit 2804  

defaultStack에 timer 인터셉터를 추가하고, 이를 기본 인터셉터로 정하는 방법에 대해 소개하려합니다.

defaultStack은 스트럿츠2가 정해놓은 기본 인터셉터 스택입니다.
이는 strtus2-core-2.x.x.jar 파일 안에 struts-default.xml에 정의되어있습니다.

다음은 defaultStack 의 정의 내용입니다.

<struts>
    <package name="struts-default" abstract="true">
        ...
        <interceptors>
            ...
            <!-- defaultStack -->
            <interceptor-stack name="defaultStack">
                <interceptor-ref name="exception"/>
                <interceptor-ref name="alias"/>
                <interceptor-ref name="servletConfig"/>
                <interceptor-ref name="prepare"/>
                <interceptor-ref name="i18n"/>
                <interceptor-ref name="chain"/>
                <interceptor-ref name="debugging"/>
                <interceptor-ref name="profiling"/>
                <interceptor-ref name="scopedModelDriven"/>
                <interceptor-ref name="modelDriven"/>
                <interceptor-ref name="fileUpload"/>
                <interceptor-ref name="checkbox"/>
                <interceptor-ref name="staticParams"/>
                <interceptor-ref name="params">
                  <param name="excludeParams">dojo\..*</param>
                </interceptor-ref>
                <interceptor-ref name="conversionError"/>
                <interceptor-ref name="validation">
                    <param name="excludeMethods">input,back,cancel,browse</param>
                </interceptor-ref>
                <interceptor-ref name="workflow">
                    <param name="excludeMethods">input,back,cancel,browse</param>
                </interceptor-ref>
            </interceptor-stack>
            ...
       </interceptors>

       <default-interceptor-ref name="defaultStack"/>
    </package>
</struts>

우리가 작성하고 있는 웹 애플리케이션의 struts.xml의 패키지가 struts-default 패키지를 상속받는다면 defaultStack을 기본 인터셉터 스택으로 사용하는 것입니다.

<struts>
    <package name="default" extends="struts-default" namespace="">
        ...
    </package>
</struts>

위의 defaultStack에 정의된 인터셉터 중 timer 인터셉터는 정의되어있지 않는데, defaultStack에 timer 인터셉터를 포함한 새로운 스택을 기본 인터셉터 스택으로 사용하고 싶다면 다음과 같이 정의해야 합니다.

(* timer 인터셉터 - Timer Interceptor는 1000분의 1초 단위로 액션의 실행 시간을 콘솔에 출력해주는 기능을 제공합니다. 이 인터셉터가 작동하려면 로깅 프레임워크가 적어도 INFO 수준으로 설정되어 있어야 합니다. 이 인터셉터는 Commons Logging API를 사용합니다.)

<struts>
    <package name="default" extends="struts-default" namespace="">
        <interceptors>
            <interceptor-stack name="myStack">
                <interceptor-ref name="defaultStack" />
                <interceptor-ref name="timer" />
            </interceptor-stack>
        </interceptors>
   
        <default-interceptor-ref name="myStack"/>


        <action name="myAction" class="example.action.MyAction">
            <result>/example/example.jsp</result>
        </action>
    </package>
</struts>

*** 참고 ***
만약 timer 인터셉터를 액션에 설정하기 위해서 아래와 같이 정의했다면,

        <action name="myAction" class="example.action.MyAction">
            <interceptor-ref name="timer" />
            <result>/example/example.jsp</result>
        </action>

myAction에는 timer 인터셉터만 걸리게 된다는 점을 주의하세요. 기본 인터셉터 스택이 적용된 후 timer인터셉터가 추가되는 것이 아닙니다.

2008-03-17 07:47:03   현철주  

  Tag
defaultStack
interceptor
커스텀 인터셉터 스택
기본 인터셉터 스택