본문 바로가기

언어공부/JSP(JavaServerPage)

JSP 기초 문법 - page 디렉티브 (1)

JSP 기초 문법 - page 디렉티브

page 디렉티브는 JSP 페이지에 대한 정보를 입력하기 위해서 사용된다. page 디렉티브를 사용하면 JSP페이지가 어떤 문서를 생성하는지, 어떤 자바 클래스를 사용하는지, 세션(session)에 참여하는지, 출력 버퍼의 존재 여부와 같이 JSP 페이지를 실행하는 데 필요한 정보를 입력할 수 있다.

 

<%@ page contentType="text/html; charset=utf-8"%>
<%@ page import="java.util.Date"%>

 

위의 코드는 각각 contentType 속성과 import 속성을 사용해서 JSP페이지에서 필요한 정보를 설정하고 있다. page 디렉티브는 이 두 속성 외에도 페이지 정보를 설정하는데 필요한 속성을 추가적으로 제공하고 있다.

 

page 디렉티브의 주요 속성

속성 설명 기본값
contentType JSP가 생성할 문서의 MIME 타입과 캐릭터 인코딩을 지정한다. text/html
import JSP 페이지에서 사용할 자바 클래스를 지정한다.  
session JSP 페이지가 세션을 사용할지의 여부를 지정한다. "true"일 경우 세션을 사용하고 "false"일 경우 세션을 사용하지 않는다. true
buffer JSP 페이지의 출력 버퍼크기를 지정한다. "none"일 경우 출력 버퍼를 사용하지 않으며, "8kb"라고 입력한 경우 8킬로바이트 크기의 출력 버퍼를 사용한다. 최소 8kb
autoFlush 출력 버퍼가 다 찼을 경우 자동으로 버퍼에 있는 데이터를 출력 스트림에 보내고 비울지 여부를 나타낸다. "true"인 경우 버퍼의 내용을 웹 브라우저에 보낸 후 버퍼를 비우며, "false"인 경우 에러를 발생시킨다. true
info JSP 페이지에 대한 설명을 입력한다.  
errorPage JSP 페이지를 실행하는 도중에 에러가 발생할 때 보여줄 페이지를 지정한다.  
isErrorPage 현재 페이지가 에러가 발생될 때 보여주는 페이지인지의 여부를 지정한다. "true"일 경우 에러페이지이며, "false'일 경우 에러 페이지가 아니다. false
pageEncoding JSP 페이지 소스 코드의 캐릭터 인코딩을 지정한다.  
isELIgnored "true"일 경우 표현 언어를 해석하지 않고 문자열로 처리하며, "false"일 경우 표현 언어를 지원한다. false
deferredSyntaxAllowedAsLiteral #{ 문자가 문자열 값으로 사용되는 것을 허용할지의 여부를 지정한다. false
trimDirectiveWhitespaces 출력 결과에서 템플릿 텍스트의 공백 문자를 제거할지의 여부를 지정한다. false

 


contentType 속성과 character set

page 디렉티브의 contentType 속성은 JSP 페이지가 생성할 문서의 타입을 지정한다.

 

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

 

contentType은 JSP가 생성할 문서의 MIME 타입을 입력한다. 위의 코드는 HTML을 생성하는 경우이다. contentType을 속성을 설정하지 않을 경우 기본값은 "text/html" 이다.

 

*MIME

MIME은 Multipurpose Internet Mail Extensions의 약자로서 이메일의 내용을 설명하기 위해 정의되었다. 하지만, 메일뿐만 아니라 HTTP등의 프로토콜에서도 응답 데이터의 내용을 설명하기 위해서 MIME을 사용하고 있다. 

 

contentType 속성의 값 중에서 "; charset=캐릭터 셋" 부분은 생략할 수 있다. 만약 캐릭터 셋을 생략할 경우 기본 캐릭터 셋인 ISO-8859-1을 사용하게 된다. 국내에서는 주로 한글을 포함하는 HTML문서를 만들어야 하기 때문에, 영어와 서유럽어의 문자만 포함하고 있는 ISO-8859-1로는 한글을 제대로 표현할 수 없다. 한글을 표현하려면 UTF-8과 같이 한국어를 포함하고 있는 캐릭터 셋을 사용해야 한다.

 

참고로 캐릭터 셋을 입력할 때에는 대소문자를 구분하지 않으므로 취향에 따라 대문자나 소문자를 이용해서 입력하면 된다.

 

보통 홈페이지에서 글자가 제대로 보이지 않는 것을 글자가 깨진다고 표현하는데, 글자가 깨진 이유는 소스 코드를 저장할 때 사용한 캐릭터 인코딩과 page 디렉티브의 contentType속성에 지정한 캐릭터 셋이 일치하지 않기 때문이다.