병갈이 블록

에러 페이지 처리. 본문

IT(Old)/JSP 공부 기록

에러 페이지 처리.

woojang 2017. 6. 20. 15:45

Error Page의 처리는 크게 3가지로 구분.

- try-catch문 (예외적으로 사용하기로 하고..)

- page 디렉티브에서 errorPage 지정.

- web.xml에서 지정.( 여기서 2가지 방법. error-code에 따라, exception-type에 따라 location에 errorpage 위치를 지정.)


동일한 Error에 따른 반응 우선순위.

1. page 디렉티브에서 errorPage 지정

2. web.xml에서 <exception-type>에 따른 <location>지정. (예외 발생의 종류에 따라. ex> NullPointerException 등등....)

3. web.xml에서 <error-code>에 따른 <location>지정. (에러페이지 코드에 따라. ex> 400, 404, 500 등등...)


page 디렉티브에서 errorPage 지정.

- 보여줄 jsp 페이지에서는 <%@ page errorPage="/error/thisiserrorPage.jsp">를 입력해서 에러페이지 경로를 지정.

- thisiserrorPage.jsp 페이지에서는 <%@ page isErrorPage="true">를 입력해서 이 페이지가 에러페이지임을 지정.


exception-type에 따른 error page 지정.

- WEB-INF폴더에 있는 web.xml에 <error-page>코드를 추가한다.(이미 있다면 입력 안해도 됨.)

- <error-page> 하위에 <exception-type>예외종류</exception-type>, <location>에러페이지경로</location>를 추가한다.


error-code에 따른 error page 지정.

-  WEB-INF폴더에 있는 web.xml에 <error-page>코드를 추가한다.(이미 있다면 입력 안해도 됨.)

- <error-page> 하위에 <error-code>에러코드</error-code>, <location>에러페이지경로</location>를 추가한다.


에러 페이지와 buffer와의 관계.

우선 짚어볼것들.

- 헤더정보는 요청시 최초의 flush가 수행될때 함께 전송된다.

- 한번 전송된 헤더정보는 이후 변경사항이 적용되지 않는다.

- 최초의 헤더정보에는 에러코드도 포함되어 있다.

- 에러 발생시 즉각 버퍼를 비우고 에러페이지를 불러와 버퍼에 넣는다.


그렇다면, 최초 헤더정보가 전송된 상황에서 중간에 에러가 발생을 하면?

- 헤더에는 정상전송코드인 200이 그대로 저장되어 있다.

- 데이터를 전송하다가 에러가 발생하는 시점에서 데이터 적재를 중단하고 에러페이지는 버퍼에 넣어 전송한다.

- 정상적인 데이터가 전송된 순간까지만 페이지를 표시하고 이어서 에러페이지를 표시한다.

- 즉, 미완성된 요청페이지와 에러페이지가 뒤섞여 나타남.

해결방법은??

- 일단 책에서는 에러발생 전에 Flush되지 않도록 버퍼의 크기를 늘리라고 한다...음. 간단하구만.

'IT(Old) > JSP 공부 기록' 카테고리의 다른 글

<jsp:forward>  (0) 2017.06.20
두가지의 include  (0) 2017.06.20
디렉티브  (0) 2017.06.20
기본 객체.  (0) 2017.06.19
웹 어플리케이션에 대해서...  (0) 2017.06.19
Comments