티스토리 뷰

지시자(directive)

디렉티브(Directive)는 웹 컨테이너가 JSP 페이지를 서블릿 클래스로 변환할 때 필요한 여러 가지 정보를 지정할 때 사용됩니다.

 

<%@ 디렉티브이름 속성1="값1" 속성2="값2" %>

 

<%@ page contentType="text/html; charset=euc-kr"%>

위 코드의 디렉티브 이름은 page가 되고 contentType과 charset이라는 속성을 사용합니다.

 

JSP에서 사용할수 있는 지시자는 다음과 같습니다.

이 세 지시자 모두 <%@ 로 시작하고 %>로 끝나야 한다.

<%@ 다음에는 바로 지시자 이름이 와야 하고, 지시자 이름 다음에는 여러 애트리뷰트가 올 수 있다.

page JSP 페이지에 대한 정보를 지정합니다.
taglib JSP 페이지에서 사용할 태그 라이브러리를 지정합니다.
include JSP 페이지의 특정 영역에 다른 문서를 포함합니다.

 

ex)

<% page contentType="text/html" charset="UTF-8" %>

<%@ page import="java.util.Date" %>

 

 

1. page 지시자

JSP 전체에 적용되는 정보를 기술하기 위해 사용된다.

contentType

JSP가 생성하는 문서의 종류와 그 문서를 웹 브라우저로 전송할 때 사용되는 인코딩 타입 

 import

 스크립팅 요소 안에서 사용할 자바 클래스와 인터페이스를 임포트하기 위해 사용하는 애트리뷰트

 buffer

 출력 버퍼의 크기

 autoFlush

 출력 버퍼가 모두 찼을 때 동작

 isThreadSafe

 JSP 싱글-스레드 모드로 작동하게 만들기 위해 필요한 애트리뷰트

 session

 JSP 세션 참여 여부

 errorPage

 에러를 처리할 JSP의 URL

 isErrorPage

 에러를 처리하는 JSP 페이지인지 여부

 isULIgnored

 익스프레션 언어의 무시/처리 여부

 

contentType 는 JSP가 생성하는 문서를 웹 브라우저로 전송할 때 사용하는 인코딩 방식을 지정하기 위해서 사용합니다. 

contentType과 charset 두값은 세미콜론으로 구분해서 써야합니다.

 

<%@ page contentType="text/html; charset=utf-8" %>

 

2. import

ex) <%@ page import="java.util.Date" %>

java.util 패키지의 Date클래스를 임포트

 

<%@ page improt="java.util.*" %>

와일드 카드를 사용

 

import 애트리뷰트는 여러 클래스/인터페이스 이름을 콤마로 구분해서 쓸 수 있습니다.

 

<%@ page import="java.util.ArrayList, java.io.* %>

 

참고) JSP는 아래의 패키지를 자동으로 import 합니다.

javax.servlet

javax.servlet.jsp

javax.servlet.http

 

3. include

다른 JSP 또는 HTML문서를 불러다가 현재 JSP 페이지의 일부로 만들기 위해 사용합니다.

불러올 대상은 file애트리뷰트를 이용해서 지정할 수 있으며, 이 애트리뷰트 값은 JSP를 기준으로 상대적 URL로 해석됩니다.

 

ex)

<%@ include file="Today.jsp" %>

현재 디렉토리에 있는 Today.jsp 를 include 합니다.

 

<%@ include file="sub1/Today.jsp" %>

sub/디렉터리에 있는 Today.jsp를 include 합니다.

 

<%@page contentType="text/html; charset="utf-8" %>

<%@page import="java.util.*"%>

<% GregorianCalendar now = new GregorianCalendar(); %>

<%= String.format("%TY년 %Tm월 %Td일", now, now, now) %>

 

4. taglib

taglib는 액션을 사용할 때 필요합니다.

액션은 기본적으로 사용할 수 있는것도 있고, 그 액션이 속한 라이브러리를 설치해야만 사용할 수 있는것도 있습니다.

taglib 지시자는 후자의 경우에 필요합니다.

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

액션이 속하는 라이브러리를 지정하는 지시자

 

 

출력버퍼와 응답

JSP 페이지는 응답데이터를 바로 브라우저로 전송하지 않습니다. 출력버퍼에 임시로 저장했다가 한번에 웹 브라우저로 전송합니다. 한번에 데이터를 보내면 아래와같은 장점을 가집니다.

 

  • 데이터 전송 성능 향상
  • JSP 실행 도중에 버퍼를 비우고 새로운 내용 전송 가능
  • 버퍼가 다 차기 전에 헤더 변경 가능

네트워크 뿐만 아니라 대부분의 데이터 전송에서는 작은 데이터를 여러본 보내는것보다 큰 데이터를 한번에 보내는것이 효율적입니다.

HTTP 구조상 헤더가 데이터의 가장 앞부분에 기술되어야하는데 즉시 데이터를 보내면 나중에 헤더를 변경하고 싶어도 변경할 수 없습니다.

 

JSP 에서 버퍼 크기 변경하기

JSP에서 따로 버퍼의 크기를 지정한적은 없지만 기본적으로 8k이사의 버퍼를 사용하도록 설정되어 있습니다.

만약 버퍼의 크기를 변경하고싶다면 아래의 코드를 작성하면 됩니다.

<%@ page buffer = "4kb" %>

 

버퍼의 크기는 kb단위로 지정할 수 있습니다. 버퍼를 사용하고싶지 않다면 "none" 값을 사용하면 됩니다.

 

<%@ page buffer = "none" %>

none으로 설정하면 다음과 같은 기능을 사용하는데 제한됩니다.

  • <jsp:forward> 기능을 사용할 수 없습니다
  • 곧바로 전송되기 때문에 출력한 내용을 취소할 수 없습니다

autoFlush

JSP의 page 지시자는 autoFlush 속성을 제공합니다. 이 속성을 사용하면 출력버퍼가 전부 찼을때 어떻게 행동할지 결정할 수 있습니다.

 

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

false: 버퍼가 다 차면 exception을 발생하고 작업을 중지

 

 

'JSP &Servlet' 카테고리의 다른 글

JSP tomcat 에서 GET방식 URI 인코딩 처리  (0) 2021.04.24
JSP request 기본객체  (0) 2021.04.24
페이지 모듈화와 요청 흐름 제어  (0) 2018.08.04
JSP 내장변수 (implicit variable)  (0) 2018.08.03
스크립틀릿(scriptlet)  (0) 2018.08.01
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/02   »
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
글 보관함