JSP 페이지 지시문이란?
JSP(JavaServer Pages)에서 페이지 지시문(page directive)은 JSP 페이지 전체에 적용되는 속성들을 컨테이너에 알려주는 역할을 합니다. 페이지 지시문은 <%@ page ... %> 형태로 작성되며, 버퍼링 방식, 캐릭터 인코딩, 오류 처리, 세션 사용 여부 등 페이지의 동작 방식을 세밀하게 제어할 수 있습니다.
하나의 JSP 페이지에는 여러 개의 page 지시문을 포함할 수 있으며, import 속성처럼 여러 번 사용해도 되는 속성과 한 번만 사용해야 하는 속성이 있습니다.
페이지 지시문의 주요 속성 목록
다음 표는 JSP 페이지 지시문과 함께 사용할 수 있는 13가지 속성과 각각의 용도를 정리한 것입니다.
| 번호 | 속성 및 설명 |
|---|---|
| 1 | buffer 출력 스트림에 적용할 버퍼링 모델을 지정합니다. 예를 들어 buffer="16kb"처럼 버퍼 크기를 설정할 수 있습니다. |
| 2 | autoFlush 서블릿 출력 버퍼의 동작을 제어합니다. true로 설정하면 버퍼가 가득 찼을 때 자동으로 내용을 출력하고, false로 설정하면 버퍼가 가득 찼을 때 예외가 발생합니다. |
| 3 | contentType 응답의 MIME 타입과 문자 인코딩 방식을 정의합니다. 예: contentType="text/html; charset=UTF-8" |
| 4 | errorPage Java의 언체크드(unchecked) 런타임 예외 발생 시 이를 처리하여 보고할 다른 JSP 페이지의 URL을 정의합니다. |
| 5 | isErrorPage 현재 JSP 페이지가 다른 JSP 페이지의 errorPage 속성으로 지정된 오류 처리 페이지인지 여부를 나타냅니다. true로 설정하면 exception 내장 객체를 사용할 수 있습니다. |
| 6 | extends 생성된 서블릿이 반드시 상속해야 할 슈퍼클래스(부모 클래스)를 지정합니다. |
| 7 | import 자바의 import 문과 마찬가지로, JSP 페이지에서 사용할 패키지나 클래스의 목록을 지정합니다. 유일하게 여러 번 중복 사용이 허용되는 속성입니다. |
| 8 | info 서블릿의 getServletInfo() 메서드를 통해 접근할 수 있는 페이지 설명 문자열을 정의합니다. |
| 9 | isThreadSafe 생성된 서블릿의 스레딩 모델을 정의합니다. true이면 여러 요청을 동시에 처리할 수 있고, false이면 하나의 요청씩 순차적으로 처리됩니다. |
| 10 | language JSP 페이지에서 사용할 프로그래밍 언어를 정의합니다. 현재는 기본값인 "java"가 일반적입니다. |
| 11 | session JSP 페이지가 HTTP 세션에 참여할지 여부를 지정합니다. 기본값은 true이며, false로 설정하면 session 내장 객체를 사용할 수 없습니다. |
| 12 | isELIgnored JSP 페이지 내의 EL(Expression Language) 표현식을 무시할지 여부를 지정합니다. true로 설정하면 ${...} 형태의 EL 표현식이 평가되지 않습니다. |
| 13 | isScriptingEnabled 스크립틀릿(scriptlet), 표현식(expression), 선언(declaration) 같은 스크립팅 요소의 사용 가능 여부를 결정합니다. false로 설정하면 스크립팅 요소 사용이 금지됩니다. |
사용 예시
아래는 여러 속성을 조합하여 페이지 지시문을 작성한 실제 예시입니다.
<%@ page
language="java"
contentType="text/html; charset=UTF-8"
buffer="16kb"
autoFlush="true"
session="true"
errorPage="/error/error.jsp"
import="java.util.*, java.text.SimpleDateFormat"
%>마무리
페이지 지시문의 각 속성을 올바르게 활용하면 JSP 페이지의 성능 최적화, 오류 처리, 인코딩 문제 해결 등을 효과적으로 관리할 수 있습니다. 특히 contentType을 통한 UTF-8 인코딩 설정과 errorPage를 통한 예외 처리는 실무에서 반드시 숙지해야 할 필수 속성이므로 꼭 기억해 두시기 바랍니다.