[펌글] JSP page 지시어 중 buffer 와 autoflush 에 관하여

By | 7월 26, 2008

Client 로 부터 요청이 들어온 경우 해당 서블릿의 JspWriter 객체에 write() 혹은 print() 하는 내용이 응답으로 전송.
 
JspWriter out 을 생성한 경우
 
out 객체에 출력하기 전 미리 저장하기 위해 buffer 를 사용.
이렇게 저장된 버퍼가 비워지는 경우는 다음 두가지다. ( autoFlush 속성이 true 인 경우에 )
1. 버퍼가 다 찼을 때
2. 해당 페이지의 서블릿의 실행을 마쳤을 때
 
buffer 속성이 none 인 경우 모든 출력은 바로 Client 에게 전송된다.
 
그럼에도 buffer 를 이용하는 이유!
 
요청에 대한 결과로 Client 가 받는 응답은 웹 서버가 전송한 HTTP 헤더와 HTTP 본문으로 구성되어 있다.
브라우저는 HTTP 헤더에 근거하여 HTTP 본문 내용을 출력하기 때문에 서버는 HTTP 본문 보다
HTTP 헤더를 먼저 전송해 주어야 한다.
응답 내용을 buffer 에 담지 않고 바로 전송하는 경우 전송 도중 Client 에 쿠키를 저장하도록 쿠키
설정 헤더를 포함할 때 Client 가 HTTP 헤더 보다 HTTP 본문을 먼저 받게 되는 문 발생
하게 된다.
뿐만 아니라 서블릿 실행 도중 run time 오류나 예외가 발생한 경우 이러한 에러 메세지가 그대로
출력
된다.
 
이러한 이유로 JSP 스펙에서는 모든 JSP 컨테이너는 Client 로 응답을 위한 출력 버퍼를 지원하도록 하고 있다.
 
autoFlush 속성이 false 인 경우 실제 출력 내용이 buffer 속성에서 지정한 크기보다 큰 경우 buffer 내용을
출력하지 않고 예외를 발생시킨다. 그러므로 출력 버퍼의 크기를 예측하기 힘든 경우 autoFlush 속성은
true 로 해야 한다.
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments