디렉티브 태그(Directive Tag)
는 JSP 페이지에 대한 처리 정보나 설정을 지정하고자 하는 경우 사용하는 태그입니다. 디렉티브 태그
는 다시 세 가지 종류로 나뉘어집니다.
페이지 디렉티브 태그
는 JSP 페이지의 처리 정보나 설정 등을 컨테이너로 전달하는 등의 역할을 수행합니다. 다양한 속성들을 통해서 값을 설정하게 됩니다.
페이지 디렉티브 태그
는 다음과 같이 사용합니다.
<%@ page 속성1="값1" 속성2="값2" %>
다음 표는 페이지 디렉티브 태그에서 사용되는 주요 속성들을 정리한 표 입니다.
속성 | 설명 | default |
---|---|---|
info | 페이지를 설명하는 문자열 | |
contentType | JSP 페이지의 출력 형식 지정 | text/html |
language | JSP 페이지에서 사용하는 프로그래밍 언어 지정 | java |
import | JSP 페이지에서 다른 패키지를 import하고자할 때 사용 | |
session | HttpSession 객체 사용 여부 지정 | true |
buffer | 페이지 출력에 사용할 버퍼 크기 지정 | 8kb |
autoFlush | 페이지 내용이 출력되기 전에 버퍼가 다 채워졌을 경우의 동작. true는 버퍼 내용을 전송하고 버퍼를 비우고, false는 예외를 발생시킨다. | true |
errorPage | 페이지 처리 도중 예외가 발생했을 때의 예외 처리 페이지 지정 | false |
inErrorPage | 현재 JSP 페이지가 예외 처리 페이지인지를 지정 | false |
pageEncoding | JSP 페이지에서 사용하는 문자열 인코딩 지정 | ISO-8859-1 |
isELIgnored | JSP 2.0의 기능으로 EL 사용 유무 지정 | true |
contentType
속성에서"text/html;charset=UTF-8"
과 같은 형식으로 인코딩을 넣을 수 있습니다. 그리고pageEncoding
속성은 JSP 페이지에서 사용하는 문자열 인코딩을 지정한다고 했습니다. 둘 다 인코딩에 관여하는 속성값이라서 헷갈릴수도 있기에 두 방식의 차이점에 대해 잠깐 알아보고 넘어가려고 합니다.먼저
contentType
의charset
은 클라이언트가 받게되는 페이지의 인코딩 방식을 의미합니다. 그리고pageEncoding
은 JSP 파일에 적힌 소스 코드의 인코딩 방식을 의미합니다.<%@ page contentType="text/html;charset=UTF-8", pageEncoding="ISO-8859-1" %>
이라는 코드가 의미하는 것은 이 JSP 파일은
ISO-8859-1
로 인코딩 되고, 이 파일이 브라우저로 응답 될 때는UTF-8
로 인코딩 됨을 의미합니다.
EL
는Expression Language
로 표현 언어, 표현식이라고 불리는 JSP 2.0에서 추가된 기능입니다.표현 언어
는${표현식|값}
과 같은 형태로 사용됩니다.이 부분에 대해선 추후에 다른 포스트로 짧게 다룰 예정이므로 지금은 그런게 있다 정도로만 알아두시면 됩니다.
참고로 해당 속성의 이름이
isELIgnored
이기 때문에false
값을 주어야EL
를 사용할 수 있게 됩니다.
페이지 디렉티브 태그에서 각 속성들은 한 번 씩만 사용할 수 있지만, 예외적으로
import
속성은 여러번 사용할 수 있습니다.
그러면 페이지 디렉티브 태그를 사용하면 어떻게 보여지는지 확인해보겠습니다. 정확히는 설정 정보를 넘기기 때문에 페이지에는 안나타나고 크롬 개발자 도구의 힘을 빌려서 응답 결과를 확인해볼게요.
다음과 같이 몇 가지의 속성을 적은 페이지 디렉티브 태그가 있는 JSP 페이지를 작성한 뒤 서버를 실행합니다.
<%@ page
info="페이지 디렉티브 태그 사용해보기"
contentType="text/html;charset=UTF-8"
language="java"
pageEncoding="UTF-8"
import="java.util.ArrayList"
import="java.util.Random"
%>
<html>
<head>
<title>Hello JSP</title>
</head>
<body>
<h1>Hello JSP</h1>
</body>
</html>
위 JSP 파일을 class 파일로 변환한 결과는 다음과 같습니다. 변환된 .java 파일을 까보면 엄청 많은 내용들이 담겨있긴 한데요. 우리가 페이지 디렉티브 태그
를 사용해서 추가한 내용들이 확실히 들어갔음을 확인할 수 있습니다. (여기서는 생략됐지만 내리다보면 인코딩에 대한 내용인 response.setContentType()
메소드도 있습니다.)
인텔리제이에서 이 변환된 java, class 파일의 위치는 이 페이지의 내용을 참조해주세요.
인클루드 디렉티브 태그
는 특정 JSP 페이지를 다른 JSP 페이지에 삽입할 때 사용하는 태그입니다.
당장 velog 상단의 로고나 메뉴같은 경우는 어느 페이지를 이동하더라도 동일하게 유지가 되죠? 그러한 페이지들을 각 페이지마다 일일이 끼워 넣는다면 상당히 비효율적인 작업이 발생하게 됩니다.
이런 경우에 인클루드 디렉티브 태그
를 사용해서 반복되는 페이지를 쉽게 추가할 수 있습니다. 이렇게 함으로써 개발 효율뿐만 아니라 유지보수도 간단해지는 효과를 얻을 수 있습니다.
인클루드 디렉티브 태그
는 다음과 같이 사용합니다.
<%@ include file=".jsp 파일" %>
태그라이브 디렉티브 태그
는 프레임워크나 개발자가 제공하는 태그를 사용하고자 할 때 사용합니다.
<%@ taglib prefix="값" uri="경로" %>