티스토리 뷰

반응형

학습 목표

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
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함