JSP

JSP 처리 과정

hojomu 2023. 3. 21. 10:32

톰캣 서버의 처리 과정

 

 : 클라이언트로부터 WAS 에 요청이 들어오면 JSP와 관련된 서블릿 클래스가 있는 경우와

서블릿 클래스가 없는 경우. 두 가지의 처리 과정이 있다.

 

서블릿 클래스가 없는 경우

 - JSP 페이지로부터 자바 코드를 생성한다. (변환)

 - 자바 코드를 컴파일해서 서블릿 클래스를 생성한다. (컴파일)

 - 서블릿에 클라이언트 요청을 전달한다.

 - 서블릿이 요청을 처리한 결과를 응답으로 생성한다.

 - 응답을 웹 브라우저에 전송한다.

 

서블릿 클래스가 있는 경우

 - 서블릿에 클라이언트 요청을 전달한다.

 - 서블릿이 요청을 처리한 결과를 응답으로 생성한다.

 - 응답을 웹 브라우저에 전송한다.

 


출력 버퍼와 응답

 : JSP 페이지는 응답 결과를 곧바로 웹 브라우저에 전송하지 않는다. 대신 출력버퍼에 임시로 응답결과를 저장해뒀다가

한 번에 웹 브라우저에 전송한다.

 

이 방식의 장점

 - 데이터 전송 성능 향상

 - JSP 실행 도중에 버퍼를 비우고 새로운 내용 전송 가능

 - 버퍼가 다 차기 전까지 헤더 변경 가능

 

page 디렉티브에서 버퍼 설정하기

 : buffer 속성과 autoFlush 속성이 있다.

버퍼를 사용하고 싶을 때
<%@ page buffer = "4kb" %>

사용하고 싶지 않을 때
<%@ page buffer = "none

** 버퍼는 킬로바이트 단위로 지정할 수 있다.

 

flush : 버퍼가 다 찼을 때, 버퍼에 쌓인 데이터르 실제로 전송되어야 할 곳에 전송하고 버퍼를 비우는 것.

autoFlush 속성은 true와 false로 설정할 수 있다.

 

true : 버퍼가 다 차면 버퍼를 플러시하고 계속해서 작업을 진행한다

false : 버퍼가 다 차면 익셉션을 발생시키고 작업을 중단한다.

 

<%@ page buffer = "1b" autoFlush = "false" %>