많이 사용되는 예외 처리 기법 중 ExceptionResolver 의 일종인 SimpleMappingExceptionResolver 를 사용하여 Exception 종류 별로 특정 페이지로 이동 할 수 있게 하는 방법 이 있다.
Controller 의 기능만 사용해서 개발 한다면 Spring MVC 의 범위 안에서 Exception 을 해결 할 수 있기 때문에 크게 문제가 되지 않는다. 실제 개발 하는 부분은 Execute Business Logic 가 전부 이기 때문 이다.
회사에서 Spring MVC 라이브러리를 바탕으로 하여 만들어 지는 프레임워크는 Handler Mapping, Handler Adapter, View Resolver 의 확장이 대부분 이며, 예외 처리는 직접 고려해야 한다.
Business Logic 을 처리 하고 난 후 사용자에게 제공 되는 화면이 요구사항에 따라 달라질 수 있고, 잦을 수도 있다. 이에 대응 하기 위해서 View 를 확장 한다.
- AbstractExcelView 를 사용하여 Excel 연동 하기 (http://blog.whitelife.co.kr/197)
- AbstractView 사용하여 Ajax 처리 하기 (http://blog.whitelife.co.kr/208)
- AbstractView 사용하여 파일 다운로드 처리 하기 (http://blog.whitelife.co.kr/211)
AbstractView 를 사용해서 작업한 내용의 글 이다. 필요한 경우 참고 하자.
View 를 확장 했기 때문에 ExceptionResolver 가 예외 처리를 할 수 없다. 시점 이 그 이후 이기 때문 이다. 추가 적인 예외 처리가 필요 한대 WAS(Web Application Server) 에서 제공 하는 기능을 사용 해야 한다.
실제 서비스 중에 알파벳이 난무 하는 화면이 보여진 다면, 문제가 심각할 것 이다. 디버깅을 해서 보완을 하더라도, 그 시간동안은 대체 하는 화면이 필요 하다.
<error-page>
<error-code>400</error-code>
<location>/WEB-INF/view/error/badrequest.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/WEB-INF/view/error/notfound.jsp</location>
</error-page>
<error-page>
<error-code>414</error-code>
<location>/WEB-INF/view/error/requesturitoolong.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/WEB-INF/view/error/internalservererror.jsp</location>
</error-page>
web.xml 에 추가 하자. 보통 /WEB-INF/web.xml 에 파일이 있다.
error-page |
description |
400 |
(잘못된 요청): 서버가 요청의 구문을 인식하지 못했다. |
404 |
(찾을 수 없음): 서버가 요청한 페이지를 찾을 수 없다. 예를 들어 서버에 존재하지 않는 페이지에 대한 요청이 있을 경우 서버는 이 코드를 제공한다. |
414 |
(요청 URI가 너무 긺): 요청 URI(일반적으로 URL)가 너무 길어 서버가 처리할 수 없다. |
500 |
(내부 서버 오류): 서버에 오류가 발생하여 요청을 수행할 수 없다. |
Http Status Code 에 따라 보여질 화면을 설정 한다.
강제로 에러를 발생해서 확인 해 보면 의도하는 화면이 표현 될 것 이다.
요구사항에 대한 기능은 정상적으로 동작 하기 때문에, 별거 아니라고 생각하고 지나칠 수 있다. 신경 써서 마무리 한다면 완성도 가 높은 프로젝트를 경험 할 수 있을 것 이다.
참고 사이트