2013년 8월 12일 월요일

[오라클자바COMMUNITY, struts2 spring강좌교육, 자바교육]struts2 interceptor exception

struts2 인터셉터(initerceptor) – exception

 
오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(신입사원채용추료교육, 오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷)  

다른 Interceptor나 Action에서 에러가 발생하면 그것을 잡아 예외에 매핑된 result로 응답을 만든다. 인터셉터 스택(interceptor stack)에서 exception interceptor보다 바깥쪽 Interceptor에서 발생한 예외는 잡을 수 없으므로 모든 interceptor에서 발생한 예외를 잡고 싶다면 exception interceptor을 stack에서 가장 먼저 선언해야 한다. Exception interceptor는 Action, initerceptor에서 던진 예외를 잡아 valueStack에 저장한다. 따라서 Action이나 Interceptor에서 예외가 발생할 때 적절한 예외를 던지든지 예외메시지를 저장하면 화면에서 ValueStack에 저장된 exception 객체를 꺼내 적절한 메시지를 사용자에게 전달할 수 있다.

 

그러나 exception interceptor보다 안쪽에 있는 interceptor라도 후 처리에서 발생하는 예외에 대해서는 result 매핑을 하지 않는다. Struts2에서는 interceptor의 전처리, Action의 실행이 성공하면 Action 메소드가 리턴한 결과로 응답을 만든다.

 

exception interceptor의 3개 파라미터

 

-      logEnabled : 로깅여부, true인 경우 StackTrace 정보 출력됨

-      logLevel : TRACE, DEBUG, INFO, WARN, ERROR, FATAL중 하나로 정의하는데 로그레벨을 정의(기본값은 DEBUG)

-      logCategory : 로그정보가 남겨질 카테고리 지정. 카테고리는 로깅 대상이 되는 클래스의 패키지.  logCategory에 지정된 패키지를 포함한 서브 패키지들의 클래스에서 발생한 에러를 로깅하며 FULL NAME을 사용하여 특정 클래스까지 지정할 수 있다.

 

 

<package name="default">
        ...
        <global-results>
            <result name="error">/exception.jsp</result>
            <result name="login">/Login.action</result>
        </global-results>

        <global-exception-mappings>
            <exception-mapping exception="java.lang.Exception" result="error"/>
        </global-exception-mappings>
        ...
        <action name="test" class="com.oraclejava.Test">
            <interceptor-ref name=”exception”>
                <param name=”logEnabled”>true</param>
                <param name=”logCategory”>com.oraclejava</param>
                <param name=”logLevel”>INFO</param>
            </interceptor-ref>
            <result>/success.jsp</result>
        </action>
        ...
    </package>

댓글 없음:

댓글 쓰기