본문 바로가기
Team Project (국비)/Team Project 메모

오류 페이지 설정 태그 (XML 설정 파일)

by Hwanii_ 2023. 9. 3.
728x90

스프링 프레임워크를 사용해서, 자바 서블릿을 활용 하고,

 

자바 서블릿 으로 아파치 톰캣과 상호 작용 하는 상황 이다.

 

서블릿 파일의 설정 파일인 web.xml 파일 내부에서,

 

서블릿 매핑, 필터 설정, 리스너 설정, 등등이 가능 했었다.

 

그외에, 세션 관리, 보안 설정, 오류 페이지 설정 등등 도 가능 한데,

 

오류 페이지 설정을 진행해 보려고 한다.

 

아래와 같이 코드를 작성 할 수 있다.

 

<error-page>
        <error-code>404</error-code>
        <location>/fallback/goback.jsp</location>
</error-page>

 

<error-page> 태그를 사용 하고,

해당 태그 내부에서, <error-code> 태그와, <location> 태그를 사용 하면 끝이다.

 

<error-page> 태그 :

XML 파일에서 정의한 오류 페이지를 나타내는 태그 (요소) 이다.

웹 어플리케이션의 오류 페이지를 설정하는 데 사용 된다.

 

<error-code> 태그 :

어떤 오류 코드를 정의할건지를 설정 하는 태그 이다.

 

<location> 태그 :

오류 페이지의 실제 위치를 정의 하는 태그 이다.

오류가 발생 했을 때, 사용자를 리디렉션 하거나, 

또는,

다른 페이지로 보내려는 경우에, 보내고 싶은 실제 위치를 작성 한다.

 

경로 :

 

 

만약에, 500 에러도 처리 하고 싶으면 ?

 

<error-page>
    <error-code>500</error-code>
    <location>/error/error.jsp</location>
</error-page>

 

위와 같이 <error-code> 태그 내부에 500 에러를 작성 하고,

<location> 태그 내부에 원하는 경로의 페이지를 설정 하면 된다.

 

[ 참고 ]

 

프로젝트를 진행 하면서,

개발자의 실수로 인해 발생하는 다양한 에러들이 발생 하면,

500 에러가 발생 했었는데,

주로 예외에 대한 부분들이였어서, 이것을 처리 하기 위해서 아래와 같이 작성 했었다.

 

<bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
    <property name="exceptionMappings">
        <props>
            <prop key="java.lang.ArithmeticException">error/error.jsp</prop>
            <prop key="java.lang.NullPointerException">error/error.jsp</prop>
        </props>
    </property>
    <!-- <property name="defaultErrorView" value="error/error.jsp"/> -->
</bean>

 

위의 코드는 DispatcherServlet-servlet 이라는 이름의 xml 설정 파일 내부에 작성 했었는데,

자바 서블릿 파일의 이름을 web.xml 에서 DispatcherServlet 이라고 지어 줬었기 때문에,

그 서블릿 파일의 멤버들에 대한 설정을 하기 위한 설정 파일이 DispatcherServlet-servlet 이다.

 

Spring에서 기본 제공 해주는 리졸버 류 중에서,

예외를 처리 할 수 있는 리졸버인 exceptionResolver 를 <bean> 태그를 사용해서 DI 해준 모습 이다.

만약에, 특정한 예외에 대해서 디테일 하게 처리를 하고 싶으면,

위와 같이 설계 해서 500 예외 처리를 해도 되지만,

 

모든 500 예외 처리를 한번에 처리 하고 싶으면 위에 작성했던,

web.xml 내부에서 <error-page>, <error-code>, <location> 태그를 사용 해서 처리 하면 된다.

 

[ 참고 ]

 

HTTP 프로토콜은 다양한 상태 코드를 제공 한다.

각각 다른 유형의 오류를 나타낼 수 있기에,

다양한 상태 코드에 대한 오류 페이지를 작성 할 수 있다.

 

일반적인 HTTP 상태 코드는 아래와 같다.

 

1. 200 OK : 성공적으로 요청이 처리.

2. 201 Created : 요청으로 새 리소스가 생성.

3. 204 No Content : 요청은 성공 했지만, 응답에 내용이 없음.

4. 400 Bad Request : 클라이언트의 요청이 잘못됨.

5. 401 Unauthorized : 요청한 리소스에 대한 인증이 필요.

6. 403 Forbidden : 클라이언트가 요청한 리소스에 대한 액세스 권한 없음.

7. 404 Not Found : 요청한 리소스를 서버에서 없거나 찾을 수 없음.

8. 500 Internal Server Error : 서버에서 요청을 처리하는 동안 오류 발생.

9. 503 Service Unavailable : 서버가 일시적으로 사용 불가능 상태 또는 과부하 상태.

 

[ 참고 ]

 

HTTP 프로토콜 이란 ?

 

프로토콜은 컴퓨터와 네트워크 장치 간에 데이터 통신을 수행 하기 위해 정의된 규칙의 집합 이다.

 

규칙은 아래와 같다.

 

1. 데이터를 전송 하고 수신하는 방법.

2. 통신 장치 간의 연결 설정 및 해제 방법.

3. 오류 처리 방법.

4. 데이터 형식.

5. 보안 기능.

..

 

정리하자면, 프로토콜은 아래와 같은 목적성을 가진다.

 

1. 다양한 컴퓨터 시스템 및 네트워크 장치 간의 통신을 표준화.

2. 서로 다른 제조사 및 플랫폼 간의 상호 운용성 (== 호환성) 확보.

3. 통신을 안정적이고 효과적으로 수행 하기 위한 지침 제공.

4. 다양한 응용 프로그램 및 서비스가 인터넷 및 네트워크 에서 원활하게 작동 할 수 있도록 함.

반응형