JSP 처리 과정
* 웹 브라우저에 JSP 페이지의 URL을 입력하면
JSP에 해당하는 서블릿이 존재하지 않을 경우 (과정 1.1)
JSP 페이지로부터 자바 코드를 생성한다. (1.2) 변환단계 (Translation)
자바 코드를 컴파일해서 서블릿 클래스를 생성한다 (1.3) 컴파일 단계 (Compile)
서블릿에 클라이언트를 요청한다 (2.1)
서블릿이 요청을 처리한 결과를 응잡으로 생성한다 (2.2)
응답을 웹 브라우저에 전송한다 (3)
JSP에 해당하는 서블릿이 있을 경우 ( 증, 이미 위 과정 1.1 ~1.3을 거친경우)
서블릿에 클라이언트를 요청한다 (2.1)
서블릿이 요청을 처리한 결과를 응잡으로 생성한다 (2.2)
응답을 웹 브라우저에 전송한다 (3)
* 즉, JSP 페이지 요청할 때 직접 JSP를 실행하는 것이 아니라, JSP를 자바 소스 코드로 변환 후 컴파일해서 생성된 서블릿을 실행하는 것이다.
* 톰캣은 작업 폴더의 JSP 파일을 자바 코드와 서블릿 클래스를 생성한다.
* JSP 페이지를 변경하면, 기존의 파일의 서블릿이 생성되었는지 여부와 관계없이 서블릿 클래스를 다시 생성한다.
출력 버퍼와 응답
* JSP 페이지는 응잡 결과를 곧바로 클라이언트에 전송하지 않고, 출력 버퍼에 임시로 저장해 두었다가 한 번에 클라이언트에 전송한다.
* 버퍼 사용의 장점
- 데이터 전송 성능 향상 -> 한번에 큰 단위로 데이터를 전송하는 것이 가능하기 때문이다.
- JSP 실행 중 버퍼를 비우고 새로운 내용 전송 가능 -> 버퍼가 일정 크기가 될 때까지 클라이언트에 전송되지 않기 때문이다.
- 버퍼가 전부 차기 전까지 헤더 변경 가능 -> WAS는 처음 버퍼의 내용을 클라이언트로 전송하기 전에 헤더 정보를 전송하기 때문이다..
1) buffer 속성
: JSP 페이지가 사용할 버퍼를 설정할 수 있다.
: 지정하지 않으면 기본값 8kb 이상 크기의 버퍼를 사용하도록 규정하고 있다.
: 사용할 버퍼의 크기를 지정할 때 사용하녀, kb (킬로바이트) 단위로 크기를 지정한다.
<%@ page buffer = "4kb" %>
: 버퍼를 사용하고 싶지 않다면 buffer 속성 값을 "none"으로 지정하면 된다. 이 때 JSP 페이지가 출력하려는 내용을 곧바로 전송하기 때문에
<jsp:forward> 기능을 사용할 수 없고, 출력한 내용을 취소할 수 없다.
* 버퍼 동작 과정
: 3번 과정에서 버퍼에 보관한 데이터를 웹 브라우저에 전송하는데, 이때 보관된 응답 데이터를 전송하기 전에 응답 상태 코드와 응답 헤더를 먼저 전송한다. 때문에 응답 헤더 값을 변경해도 웹 브라우저에 전송되지 않고 무시된다.
2) autoFlush
* 플러시(flush) : 버퍼가 다 찼을 때, 쌓인 데이터를 실제로 전송되어야 할 곳(or 저장되어야 할 곳)에 전송(or 저장)하고 버퍼를 비우는 것
* 버퍼가 다 찼을 때 어떻게 처리할지 결정할 수 있다. "true"나 "false"를 값으로 갖는다.
true : 버퍼가 다 차면 버퍼를 플러시하고 계속해서 작업을 진행한다.
false : 버퍽 다 차면 익셉션을 발생시키고 작업을 중지한다.
'WEB > JSP Servlet' 카테고리의 다른 글
기본객체 : out, pageContext, application, 속성 사용 (0) | 2016.10.27 |
---|---|
웹 어플리케이션 폴더 (0) | 2016.10.27 |
기본 객체 : response (0) | 2016.10.26 |
기본 객체 : request (0) | 2016.10.26 |
스크립트 요소 (0) | 2016.10.26 |