TIL 49 | [JSP] JSP 페이지 모듈화

Yoonsik·2022년 10월 10일
0

JSP

목록 보기
8/12

⛓ JSP 출력 버퍼(Buffer)

버퍼(Buffer)는 데이터가 전달되는 중 임시 저장공간 역할을 합니다.

JSP는 기본적으로 페이지 처리결과를 곧바로 클라이언트로 출력하여 응답하지 않고, 이 출력 버퍼에 모아두었다가 한꺼번에 응답 합니다.

네트워크에서 데이터는 스트림 형태로 전달됩니다. 이때 네트워크가 항상 원활하지 않을 경우가 있는데, 버퍼는 이 데이터가 전달되는중 임시저장공간 역할을 합니다.

데이터가 전달되면서 임시 저장소 역할을 하는 버퍼에 어느정도 데이터가 채워지면 버퍼에 있는 데이터를 클라이언트에게 보내주게 됩니다(flush).

jsp 실행 결과물을 만드는 과정 중에도 버퍼라는 것이 존재하는데, 이와 관련된 기능을 out객체가 담당합니다.

이 버퍼(임시저장공간)의 사이즈는 너무 작거나 커선 안됩니다. jsp를 실행할때 필요한 가장 이상적인 버퍼의 크기는 8kb 입니다.
때문에, 따로 성절하지 않으면 디폴트값으로 8kb가 지정된다.

jsp에서 사용되는 버퍼에 관한 설정은 page 디렉티브(지시어) 에서 Buffer속성과 autoFlush속성을 통해 설정이 가능합니다.

  • Buffer 속성
    buffer 속성은 버퍼 크기를 kb 단위로 지정할 수 있습니다.
    기본적으로 buffer 속성을 통해 크기를 명시해주지 않아도 8kb의 버퍼가 사용되며, 만약 버퍼를 사용하지 않는 경우 none으로 지정해주면 됩니다.

  • autoFlush 속성
    autoFlush 속성은 출력 결과가 버퍼에 가득 찼을 경우의 행동을 지정해줍니다.
    true인 경우 버퍼가 가득 차면 버퍼의 내용을 클라이언트로 전달하고 버퍼를 비우게 되며,
    false인 경우에는 버퍼가 다 찼을 때 IOException(입출력 예외)을 발생시키고 작업을 중단하게 됩니다.
    (Buffer의 내용을 출력하고, Buffer를 비우는 행위를 Flush라고 합니다.)

이 두 속성은 직접 설정하지 않을 시, 기본값으로 설정됨
buffer의 크기 = 8kb 적용 + autoFlush = true

오류가 발생해도 autoFlush="false"를 사용해야하는 경우도 존재합니다.


⛓ JSP 페이지 모듈화

🔗 <jsp:include> 액션태그

지정한 외부 JSP 페이지를 현재 JSP 파일의 <jsp:include> 태그가 위치한 부분에 포함시킬 때 사용합니다.

🔩 <jsp:include> 액션태그의 동작방식

  • main.jap가 웹 브라우저의 요청을 받음

  • 출력내용A를 출력버퍼에 저장

  • <jsp:include>가 실행되면 요청흐름을 지정한 외부 jsp파일 sub.jsp로 이동시킴

  • 출력내용B를 출력버퍼에 저장

  • sub.jsp의 실행이 끝나면 요청흐름이 다시 <jsp:include> 이후 부분으로 돌아온다.

  • <jsp:include>이후 부분인 출력내용C를 출력버퍼에 저장

  • 출력버퍼에 저장된 출력내용들을 응답 데이터로 전송

🔗 <jsp:includ>액션태그의 문법

<jsp:include page="이동할 페이지" flush="true" />
<jsp:include page="이동할 페이지" flush="false" />

// <jsp:param>태그를 이용해 값 전달
<jsp:include page="이동할 페이지" flush=" ... ">
	<jsp:param name="파라미터 1" value="값 1" />
    <jsp:param name="파라미터 2" value="값 2" />
</jsp:include>

<jsp:param> 액션태그

<jsp:include>나 <jsp:forward>를 사용할 때 다른 페이지에 값을 전달해주는 액션태그이며, 전달할 수 있는 값은 String 뿐이다.

profile
꾸준함의 힘

0개의 댓글