반응형
학습 목표
jsp 소스 코드가 어떤 과정을 거펴서 웹 브라우저의 서비스 요청에 응답하는지와 출력 버퍼가 응답과정에서 어떻게 동작하는지 살펴볼 것이다.
- jsp 의 요청 처리 과정
- 출력 버퍼
- 웹 어플리케이션 폴더 구조
- war 파일
jsp 처리 과정
- JSP 에 해당하는 서블릿이 존재하지 않는 겨웅
- JSP 페이지로부터 자바 코드를 생성한다.
- 자바 코드를 컴파일해서 서블릿 클래스를 생성한다.
- 서블릿에 클라이언트 요청을 전달한다.
- 서블릿이 요청을 처리한 결과를 응답으로 생성한다.
- 응답을 웹 브라우저에 전송한다.
- JSP 에 해당하는 서블릿에 존재하는 경우
- 서블릿에 클라이언트 요청을 전달한다.
- 서블릿이 요청을 처리한 결과를 응답으로 생성한다.
- 응답을 웹브라우저에 전달한다.
톰캣은 work 폴더에 JSP 를 변환한 자바 소스코드와 서블릿 클래스를 생성한다.
- JSP 실행한다. == JSP 페이지 컴파일 결과인 서블릿 클래스를 생성후 실행한다.
출력 버퍼와 응답
JSP 페이지는 응답 결과는 곧바로 웹브라우저에 전송하지 않는다. 대신 출력 버퍼라 불리는 곳에 임시로 응답 결과를 저장했다가 한 번에 웹 브라우저에 전송한다.
장점
- 데이터 전송 성능 향상
- JSP 실행 도중에 버퍼를 비우고 새로운 내용 전송 가능( 에러 정정에 유리 )
- 버퍼가 다 차기 전까지 헤더 변경 가능( 버퍼 차기 전에 전송하지 않는다. )
page 디렉티브에서 버퍼 설정하기: buffer 속성과 autoFlush 속성
<%@ page buffer="4kb" %>
버퍼를 사용하고 싶지 않다면, buffer="none"
으로 명시적 지정해주면 된다. default 는 8kb 이상이다.
-
buffer="none"
<jsp:forward>
기능을 사용할 수 없다.- 곧바로 전송되기 때문에 출력한 내용을 취소할 수 없다.
-
flush
- 버퍼가 다 찼을 떄, 버퍼에 쌓인 데이터를 실제로 전송돼야할 곳에 전송하고, 버퍼를 비운다.
autoFlush="false"
: 버퍼가 다 차면 익셉션을 발생시키고 작업을 중지한다.autoFlush="true"
: 버퍼가 다 차면 버퍼를 플러시하고 계속해서 작업을 진행한다.
반응형
'스프링, 자바' 카테고리의 다른 글
jsp 와 세션 (0) | 2021.01.19 |
---|---|
jsp 와 쿠키 (0) | 2021.01.19 |
스프링 웹 개발 기초 (0) | 2021.01.19 |
프로젝트 환경 설정 (0) | 2021.01.19 |
[intelly j ] spring 초기 세팅 모음집 (0) | 2021.01.18 |