스펜서 개발블로그

#7. JSP&Sevlet - Exception Handler 본문

Server/JSP & Servlet

#7. JSP&Sevlet - Exception Handler

스펜서 2021. 4. 27. 17:50

Exception Handler

예외가 발생했을 때 값과 페이지를 바꿔주는 역할을 한다.

 

 

Exception 발생과 처리 흐름

 

1. index

 

a태그를 이용하여 아래와 같은 에러가 발생하면 href 안의 값을 통해 특정 페이지로 보내준다.

 

2. ErrorSevlet

 

(여기서는 Annotation을 통해) index의 a태그의 href값을 mapping하여 연결한다.

doGet방식을 사용하여 response.sendError를 통해 404 에러 페이지를 띄워주고, 404 에러 페이지에 표시할 텍스트를 함께 적어준다.

(404 에러 페이지는 Tomcat에 내장되어 있음)

 

3. Web.xml

 

Response로 에러 코드가 나오면 xml에서 error-code 태그에 작성된 에러코드가 일치할 경우,

location 태그에 mapping을 위한 위치를 작성한다.

 

4. ExceptionHandlerServlet

 

Web.xml에 있는 location 값(/showErrorPage)을 mapping한다. (여기서는 Annotation 방식 사용)

 

입력 값을 request로 받아 Enumeration<>에 담은 뒤 while문을 통해 아래와 요소를 뽑아내 파악한다.(Enumeration<>은 순서를 가진 배열의 일종)

이렇게 파악된 요소의 값을 형변환을 통해 변수에 담아준다.

값을 파악하기 위해서는 콘솔에 출력해서 확인할 수 있다.

 

 

StringBuilder 객체를 만들어 .append를 통해 html문서(errorPage)를 작성하고, 위에서 변수에 담아준 값 중 필요한 값을 html 문서에 표시해준다. (statusCode, message)

 

위에서 만든 값을 넘겨주기 위해 response에 담겨지는 값을 .setContentType()을 이용하여 text/html 타입의 문서에 utf-8 인코딩 방식으로 변환해준다.

response를 getWriter로 작성하여 이에 맞는 PrintWriter 형식의 변수로 받아주고, 최종적으로 작성된 html 문서를 to.String()과 .print()메소드를 통해 출력해준다.

 

 

#참고할 내용

 

Enumeration, Iterator

Comments