[JSP] JSP 기본 요소 02 - 지시어

jsp

목차

  1. 개요
  2. page 지시어
  3. include 지시어
  4. taglib 지시어



개요

<%@ ... %>

JSP 지시어(Directive)는 위와 같은 형식으로 JSP 파일 내에서 JSP를 실행할 컨테이너에서 해당 페이지를 어떻게 처리할 것인가 설정 정보를 지정하는데 사용된다. 지시어는 크게 3가지로 나뉜다.




page 지시어

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

JSP 페이지에 대한 속성을 지정하는 지시어로 12개의 설정 정보를 지정할 수 있다.

속성 사용법 기본값 설명
language language=”java” java 스크립트 요소에서 사용할 언어 설정
extends extends=”클래스명” 없음 상속받을 클래스를 설정
import import=”패키지.클래스명” 없음 import할 패키지.클래스 설정
session session=”true” true HttpSession 사용 여부를 설정
buffer buffer=16kb” 8kb JSP 페이지의 출력 버퍼 크기를 설정
autoFlush autoFlush=”true” true 출력 버퍼가 다 찼을 경우 처리 방법을 설정
isThreadSafe isThreadSafe=”true” true 다중 스레드의 동시 실행 여부를 설정
info info=”페이지 설명” 없음 페이지 설명
errorPage errorPage=”에러 페이지.jsp” 없음 에러 페이지로 사용할 페이지를 지정
contentType contentType=”text/html” htext/html;
charset=ISO-8859-1
JSP 페이지가 생성할 문서의 타입을 지정
isErrorPage isErrorPage=”false” false 현재 페이지를 에러 페이지로 지정
pageEncoding pageEncoding=”euc-kr” ISO-8859-1 현재 페이지의 문자 인코딩 타입 설정


  • language 속성: JSP 파일 내에서 사용될 스크립트 언어를 지정하는 속성

- include 지시어를 사용할 경우 include될 페이지의 language 속성과 include할 페이지의 language 속성은 반드시 동일해야 함

  • extends 속성: JSP 파일이 서블릿 클래스로 변환되는 과정에서 상속할 부모 클래스를 지정하는 속성

- 보통은 개발자가 특별히 지정하는 경우는 거의 없음

  • import 속성: 자바에서 사용하는 import 구문과 동일

  • session 속성: 세션 관리할 때 사용하는 속성

- 세션 관리: HTTP 프로토콜은 stateless 특성을 가져 커넥션을 매번 새로 생성하므로 동일한 클라이언트에 대해 정보를 유지할 필요가 있을 경우 다른 클라이언트와 구별하는 특별하는 방법

  • buffer 속성: JSP 페이지가 서블릿으로 변환되어 응답을 생성해 클라이언트에 전송할 때 사용되는 버퍼의 크기를 지정하는 속성

- “none”으로 설정할 경우 응답을 생성할 때 버퍼를 사용하지 않고 클라이언트에 응답을 바로 전송한다.

  • autoFlush 속성: buffer 속성에서 지정한 버퍼가 다 채워졌을 경우 어떻게 처리할 것인지 JSP 컨테이너에게 알려주는 속성

- “false”로 설정할 경우 버퍼가 다 채워졌을 때 버퍼를 전송하는 것이 아니라 Exception을 발생시킴

- buffer 속성을 “none”으로 지정했을 때 autoFlush 속성을 “false”로 지정하는 것은 불가능함

  • isThreadSafe 속성: 다중 스레드로 인한 한 데이터에 동시 접근 가능성 여부를 지정하는 속성

- JSP는 다중 스레드를 기반으로 실행되므로 다중 스레드로 인해 한 데이터에 동시 접근이 이루어지면 그 데이터의 값이 의도되지 않은 값으로 변경될 가능성이 있을 경우 동시 접근을 차단할 필요가 있으므로

- “true”로 설정할 경우 하나의 스레드에 의한 service() 메소드 실행이 완전히 끝날 때까지 다른 스레드는 기다리게 함

  • info 속성: 해당 페이지 전체의 주석 역할을 하는 속성

  • errorPage 속성: JSP 페이지를 처리하는 과정에서 예외가 발생했을 때 직접 처리하지 않고 에러 페이지를 지정해 지정된 에러 페이지에서 예외를 처리하도록 하는 속성

- 모든 예외가 반드시 에러 페이지에서 처리되는 것은 아님

- buffer 속성이 “none”으로 지정되었다면 응답이 즉시 전송되므로 에러 페이지로 넘어가지 않음

- buffer 속성에 특정 값이 지정되어 있고 autoFlush가 “true”로 지정되었을 때 버퍼가 다 채워져서 클라이언트로 응답이 전송된 이후에는 마찬가지로 예외가 발생하더라도 에러 페이지로 제어권이 넘어가지 않음

  • contentType 속성: JSP 페이지가 전송할 응답의 형태가 어떤 MIME 형식으로 되어 있는지를 지정하는 속성

  • isErrorPage 속성: 다른 페이지에서 발생하는 예외를 처리할 페이지인지 지정하는 속성

  • pageEncoding 속성: JSP 페이지의 문자셋 인코딩을 지정할 때 사용하는 속성

- 보통은 pageEncoding을 사용하지 않고 지시자 영역에서 contentType 속성을 지정할 때 한 번에 지정함




include 지시어

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

특정한 JSP 파일 또는 HTML 파일을 해당 JSP 페이지에 삽입할 수 있도록 하는 기능을 제공하는 지시어로, 공통된 부분이 많을 때 이러한 공통되는 부분을 따로 파일로 만들어 include 지시어로 삽입하면 간단하다.

이 때 포함되는 파일들은 실제 컴파일 과정을 거쳐서 그 결과가 해당 JSP 페이지에 포함되는 것이 아니라 JSP 소스 코드 자체가 복사되어 더해지므로 서블릿 컴파일 과정은 include 되는 파일의 개수가 아무리 많더라도 단 한 번만 이루어진다. (사실 잘 모르겠다)

includeTest.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<%@ include file="header.jsp" %>
<html>
<head>
<meta charset="UTF-8">
<title>Include TEST</title>
</head>
<body>
<h1>inlcudeTest.jsp 파일입니다.</h1>
<%@ include file="footer.jsp" %>
</body>
</html>

header.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<h3>header.jsp 파일이 내용이 들어가는 곳입니다.</h3>
<hr>

footer.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<hr>
<h3>footer.jsp 파일의 내요이 들어가는 곳입니다.</h3>

결과

0201




taglib 지시어

<%@ taglib uri="http://taglib.com/sampleURI" prefix="samplePrefix" %>

JSTL(JSP Standard Tag Library)나 커스텀 태그 등 태그 라아브러리를 JSP에서 사용할 때 접두사를 지정할 때 사용한다. taglib 지시어는 uri 속성과 prefix 속성의 두 가지 속성으로 이루어지고, uri 속성은 태그와 속성 정보를 저장한 TLD(Tag Library Descriptor) 파일이 존재하는 위치를 지정하고, prefix 속성에는 사용할 커스텀 태그의 네임 스페이스를 지정한다.