struts2 - struts 2의 Exception 처리

Published on: 2009. 8. 9. 15:47 by louis.dev


struts 2에서는 action mapping이 되어있는 xml파일에 익셉션을 선언하여 Exception을 처리 할 수 있다.

exception의 선언 방법에는 두가지가 있는데.

1. mapping된 xml 파일의 상단에 선언하여(package 아래 action 태그 위에 선언) global-exception을 처리 하는 방법
2. mapping된 xml 파일의 중간(action 태그 내부에 선언) 하여 특정한 action에서의 exception을 처리 하는 방법

이렇게 두가지 방법을 들을 수가 있다.

1. mapping xml파일의 상단에 선언하는 global-exception처리방법

다음과 같이 Action Mapping을 수행하는 xml 파일의 상단에 선언한다.
위에서 말했듯이 Global-exception은 그림과 같이 <package/> 태그의 시작부분 그리고 <action/>태그보다 위에 위치해 있어야 한다.

<global-exception-mapping/> 에서 선언한 종류의 익셉션이 발생했을 경우 result ="exception" 이 실행이 되는디 이 exception이란 result는 상단에 <global-result/>라고 선언된 곳의 result name을 따라가게 된다. 그리고 선언된 page를 요청하여 사용자에게 보여주게 된다.

물론 <global-result/>에서 여러가지 종료의 exception result를 선언하여 다양한 Exception에 마춰 다양한 에러페이지로 이동할 수도 있다.
당연히 <global-exception-mapping/>도 여러개가 선언되어 있어야 할 것이다.


2. 특정 action 에 대한 Exception을 처리 하는 방법


다음과 같이 <action/>태그 내에 <excpetion-mapping/>을 선언한다. 위와 같은 코드는 NullPointerException이 발생되었을때 <action/>태그내에 선언되어 있는 result name="exception" 인 에러 페이지로 이동하게 된다.(exception-mapping result와 result name="exception" 이 같아야 한다.)

<공통>
Exception이 발생하였을때 보여지는 jsp페이지에서는 struts2에서 제공하는 태그라이브러리를 통해 에러 내용을 출력 할 수 있다.

<%@ taglib prefix="s" uri="/struts-tags" %>

tag lib을 추가 하고
<s:actionerror/>
<s:actionmessage/>
<s:fielderror/>
다음과 같은 테그로 에러 내용을 표시 할 수 있다. 또한
${exception.message}
이렇게 선언할 수 도 있고

예외 상세 정보를 확인 하려면
${exceptionStack}

선언하여 exceptionStack에 쌓여있는 에러 정보를 확인 할 수도 있다

'Framework > STRUTS 2' 카테고리의 다른 글

struts 2 - 스트러츠2 + spring 연동하기  (2) 2009.07.12
struts 2 - JFree Chart plugin  (0) 2009.07.08
struts 2 - Tiles Plug in  (6) 2009.07.08
struts 2 - Interceptor  (3) 2009.07.06
struts 2 - properties 파일  (1) 2009.07.05