Error 페이지 생성 with Spring
예외 종류별로 뷰 지정
Spring MVC에서는 servlet-context.xml
설정 파일에 이러한 매핑을 지정함으로써 특정 상태 코드를 사용자 정의 뷰에 매핑할 수 있습니다.
SimpleMappingExceptionResolver
빈 설정 : 예외 종류 별로 뷰 지정
servlet-context.xml
에 SimpleMappingExceptionResolver
빈을 선언해야 합니다.
이 빈은 예외를 뷰 이름에 매핑하는 데 사용될 수 있습니다:
<beans:bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<beans:property name="exceptionMappings">
<beans:props>
<beans:prop key="com.fastcampus.ch2.MyException">error400</beans:prop>
</beans:props>
</beans:property>
</beans:bean>
이 설정에서 com.fastcampus.ch2.MyException
은 error400
뷰에 매핑됩니다.
이는 MyException
이 발생하면 error400.jsp
뷰가 사용자에게 반환된다는 것을 의미합니다.
View를 상태 코드에 매핑
또한, statusCodes
속성을 사용하여 뷰를 상태 코드에 매핑할 수도 있습니다:
<beans:bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<beans:property name="statusCodes">
<beans:props>
<beans:prop key="error400">400</beans:prop>
</beans:props>
</beans:property>
</beans:bean>
여기서 error400
뷰는 400
상태 코드와 연결됩니다.
이는 error400.jsp
뷰가 사용자에게 반환될 때 HTTP 응답 상태가 400
이 됨을 의미합니다.
응답 상태 코드 별로 뷰 지정
Spring MVC 애플리케이션에서 web.xml의 오류 페이지 선언을 사용하여 특정 HTTP 응답 상태 코드를 특정 뷰에 매핑할 수 있습니다.
이는 400, 404, 500 등과 같은 다양한 HTTP 상태 코드에 대한 사용자 지정 오류 페이지를 만드는 데 유용할 수 있습니다.
다음은 400 HTTP 응답 상태 코드에 대한 오류 페이지를 정의하는 방법의 예입니다.
<error-page>
<error-code>400</error-code>
<location>/err400.jsp</location>
</error-page>
web.xml의 이 구성은 서블릿 컨테이너에 400 상태 코드가 발생할 때마다 요청을 /err400.jsp
로 전달해야 한다고 알려줍니다.
위치 요소에는 애플리케이션의 유효한 JSP 페이지 또는 서블릿에 대한 경로가 포함되어야 합니다.
경로는 애플리케이션 컨텍스트 루트에 상대적입니다.
따라서 Spring MVC 애플리케이션에서 400 오류(잘못된 요청)가 발생할 때마다 최종 사용자는 err400.jsp
페이지로 이동하여 보다 사용자 친화적인 오류 메시지를 제공할 수 있습니다.
이렇게 하면 모든 상태 코드를 Spring 애플리케이션의 특정 보기에 매핑할 수 있습니다.
JSP 상태 코드 기능 처리
그러나 상태 코드를 400
으로 설정하더라도 500
상태 코드가 대신 반환되는 경우가 있을 수 있습니다.
이 동작은 JSP의 기능 때문입니다.
이 문제를 해결하려면 JSP 페이지 지시문의 isErrorPage
속성을 true
로 설정할 수 있습니다:
<%@ page isErrorPage="true"%>
이는 현재 JSP를 오류 페이지로 사용할 수 있다는 것을 컨테이너에 알립니다.
JSP에서 예외가 포착되지 않으면 컨테이너는 자동으로 상태 코드를 500
으로 변경합니다.
isErrorPage
를 true
로 설정함으로써 예외 객체가 JSP 페이지에서 사용 가능하게 되며, 이를 처리하여 컨테이너가 상태 코드를 500
으로 변경하는 것을 방지할 수 있습니다.
예외 처리 흐름
Spring MVC 애플리케이션에서 예외가 어떻게 처리되는지 이해하려면, Maven 종속성 아래에 있는 DispatcherServlet
속성 파일을 확인할 수 있습니다.
ㄴ이 설정 파일에는 DispatcherServlet
의 전략 정의가 포함되어 있으며, 이에는 예외를 처리하는 전략도 포함됩니다.
부족한 점이나 잘못 된 점을 알려주시면 시정하겠습니다 :>
'DEV > Java' 카테고리의 다른 글
데이터 변환 with Spring (0) | 2023.05.27 |
---|---|
데이터 검증 with Spring (0) | 2023.05.27 |
예외처리 with Spring (0) | 2023.05.26 |
Spring MVC의 Redirect와 Forward (2) | 2023.05.19 |
DispatcherServlet (0) | 2023.05.19 |