[JSP] 디렉티브 태그

Bam·2024년 5월 16일
0

Spring

목록 보기
30/48
post-thumbnail

디렉티브 태그

디렉티브 태그(Directive Tag)는 JSP 페이지에 대한 처리 정보나 설정을 지정하고자 하는 경우 사용하는 태그입니다. 디렉티브 태그는 다시 세 가지 종류로 나뉘어집니다.

  • 페이지 디렉티브 태그(Page Directive Tag): JSP 페이지의 전반적인 정보를 설정할 때 사용하는 태그입니다.
  • 인클루드 디렉티브 태그(Include Directive Tag): 공통으로 사용하는 JSP 페이지를 다른 JSP 페이지에 삽입할 때 사용하는 태그입니다.
  • 태그라이브 디렉티브 태그(Taglib Directive Tag): 프레임워크, 개발자가 제공하는 태그를 사용할 때 사용합니다.

페이지 디렉티브 태그

페이지 디렉티브 태그는 JSP 페이지의 처리 정보나 설정 등을 컨테이너로 전달하는 등의 역할을 수행합니다. 다양한 속성들을 통해서 값을 설정하게 됩니다.

페이지 디렉티브 태그는 다음과 같이 사용합니다.

<%@ page 속성1="값1" 속성2="값2" %>

페이지 디렉티브 태그 주요 속성

다음 표는 페이지 디렉티브 태그에서 사용되는 주요 속성들을 정리한 표 입니다.

속성설명default
info페이지를 설명하는 문자열
contentTypeJSP 페이지의 출력 형식 지정text/html
languageJSP 페이지에서 사용하는 프로그래밍 언어 지정java
importJSP 페이지에서 다른 패키지를 import하고자할 때 사용
sessionHttpSession 객체 사용 여부 지정true
buffer페이지 출력에 사용할 버퍼 크기 지정8kb
autoFlush페이지 내용이 출력되기 전에 버퍼가 다 채워졌을 경우의 동작.
true는 버퍼 내용을 전송하고 버퍼를 비우고, false는 예외를 발생시킨다.
true
errorPage페이지 처리 도중 예외가 발생했을 때의 예외 처리 페이지 지정false
inErrorPage현재 JSP 페이지가 예외 처리 페이지인지를 지정false
pageEncodingJSP 페이지에서 사용하는 문자열 인코딩 지정ISO-8859-1
isELIgnoredJSP 2.0의 기능으로 EL 사용 유무 지정true

contentType 속성에서 "text/html;charset=UTF-8"과 같은 형식으로 인코딩을 넣을 수 있습니다. 그리고 pageEncoding 속성은 JSP 페이지에서 사용하는 문자열 인코딩을 지정한다고 했습니다. 둘 다 인코딩에 관여하는 속성값이라서 헷갈릴수도 있기에 두 방식의 차이점에 대해 잠깐 알아보고 넘어가려고 합니다.

먼저 contentTypecharset은 클라이언트가 받게되는 페이지의 인코딩 방식을 의미합니다. 그리고 pageEncoding은 JSP 파일에 적힌 소스 코드의 인코딩 방식을 의미합니다.

<%@ page contentType="text/html;charset=UTF-8", pageEncoding="ISO-8859-1" %>

이라는 코드가 의미하는 것은 이 JSP 파일은 ISO-8859-1로 인코딩 되고, 이 파일이 브라우저로 응답 될 때는 UTF-8로 인코딩 됨을 의미합니다.

ELExpression 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="경로" %>

0개의 댓글