-> 블로그 이전

[JSP] JSP 처리 과정 & 버퍼

2022. 3. 18. 19:17Language`/JSP (Java Server Page)

JSP 처리 과정

1) 요청한 JSP 페이지와 관련된 "서블릿 클래스"가 없는 경우

1. JSP 페이지를 자바 소스코드로 "변환"

2. 자바 소스코드를 서블릿 클래스로 "컴파일"

3. WAS가 서블릿에 Request 전달

4. 서블릿은 Request에 대한 Response 생성해서 WAS에 전달

5. WAS는 Client(웹 브라우저)에게 Response 전달

 

2) 요청한 JSP 페이지와 관련된 "서블릿 클래스"가 있는 경우

1. WAS가 서블릿에 Request 전달

2. 서블릿은 Request에 대한 Response 생성해서 WAS에 전달

3. WAS는 Client(웹 브라우저)에게 Response 전달

 

 

출력 버퍼

- JSP 페이지가 생성하는 출력 내용을 모았다가 한번에 웹 브라우저에 전송할 수 있다

 

장점

1) 성능 향상

- 한 번에 큰 단위의 데이터를 전송할 수 있기 때문에 성능이 향상된다

 

2) <jsp : forward> & 에러 페이지 처리 가능

- JSP 페이지가 생성한 결과는 일단 출력 버퍼에 저장되기 때문에, 버퍼가 일정 용량을 넘지 않는 이상 웹 브라우저에 데이터를 전송하지 않는다

- 이러한 과정으로 인해서, JSP 페이지 실행 도중에 버퍼에 보관된 데이터를 지우고 새로운 내용을 전송할 수 있다

- 예를 들어서, 에러가 발생하면 버퍼의 내용을 전부 지우고 에러 화면을 출력한다

 

3) 버퍼가 다 차기 전까지 헤더 정보 변경 가능

- 버퍼 내용을 웹 브라우저에 전송하기 전까지 헤더 정보를 얼마든지 변경할 수 있지만, 버퍼 내용이 웹 브라우저에 보내지면 헤더 정보는 절대 변경 불가능하다

 

 

page 디렉티브 버퍼 설정 :: buffer & autoFlush

<%@ page buffer = "4kb" %>

- "kb" 단위로 크기를 지정하고, "kb"를 붙이지 않으면 JSP 페이지를 자바 코드로 변환하는 과정에서 에러가 발생한다

- buffer 속성을 지정하지 않으면 최소 "8kb" 이상의 버퍼를 사용하도록 규정되어 있다

 

<%@ page buffer = "none" %>

- buffer를 "none"으로 설정하면

  • <jsp : foward> 기능을 사용할 수 없고,
  • 곧바로 전송되기 때문에 내용을 변경할 수 없다

>> 기본적으로 버퍼가 전부 차게되면 자동으로 데이터를 전송한다

 

<%@ page autoFlush = "true" %>

- autoFlush를 "true"로 설정하면 버퍼가 다 차면 전부 flush하고 작업을 계속 진행

- autoFlush를 "false"로 설정하면 버퍼가 다 차면 에러가 발생하고 작업을 중단