*디렉티브 태그는 지시어 태그로도 많이 불린다.
디렉티브 태그
JSP페이지가 톰캣에 의해 서블릿 프로그램에서 서블릿 클래스로 변환될 때 JSP 페이지를 어떻게 처리할 것인지 설정하는 태그이다. 어떻게 처리할 것인지 처리 환경을 설정하는 태그인 것이다. 디렉티브 태그는 총 3가지이다.
디렉티브 태그 | 형식 | 설명 |
page | <%@ page ... %> | JSP 페이지 정보 설정 |
include | <%@ include ... %> | 다른 문서 포함 |
page 태그 <%@ page ... %>
현재 JSP 페이지에 대한 정보를 설정하는 태그
속성 | 속성 값 | 설명 | 기본값 |
language(디폴트) | 사용할 프로그래밍 언어(현재는 JAVA만 가능) | JAVA | |
contentType(디폴트) | text/xml, text/plain 등 | 생성할 문서의 콘텐츠 유형 설정 | text/html |
charset=utf-8 | 페이지 전체 문자열 | ||
pageEncoding(디폴트) | UTP-8, EUC-KR 등 | 페이지의 문자 인코딩 유형 | ISO-8859-1 |
import | import 패키지 | 자바 클래스 설정 | |
session | true, false | HTTP 세션 사용 여부 | true |
buffer | none, 버퍼 크기 | 현재 JSP 페이지의 출력 버퍼 크기를 설정한다. | 8KB |
autoFlush | true, false | 출력 버퍼의 동작 제어를 설정한다 | true |
isThreadSafe | true, false | 멀티스레드 허용 여부를 설정 | true |
info | JSP 페이지에 대한 설명을 설정 | ||
errorPage | 오류가 발생했을 때 보여줄 오류 페이지를 설정 | ||
isErrorPage | false | 현재 페이지가 오류페이지인지의 여부 설정 | |
isELIgnored | false | 페이지의 표현 언어(e 0 지원 여부를 설정 | false |
isScriptingEnabled | 스크립트 태그 사용 여부를 설정 |
* 한글 인코딩 기법 3가지 (사용자 입력 값, 코드 출력 값 모두 인코딩 필요)
1. ISO-8859-1 : JSP 기본값
2. UTP-8 : JAVA, Android 지원
3. EUC-KR : 이클립스 기본값
*contentType VS pageEncoding
처음엔 contentType만 존재. 영어권 개발자들만 썼으므로 문자열 형식을 지정해줄 필요가 없었음. 그래서 그냥 charset으로만 하였음. 그러나 점점 동남아 국가 개발자들도 사용하기 시작하며, 인코딩 방법이 복잡해지니 추가로 pageEncoding 속성을 만들었음.
만약 contentType의 인코딩 방법과 pageEncoding의 인코딩 방법이 다를 경우, pageEncoding 속성에서 정의한 인코딩 방법으로 진행된다.
import 속성 <%@ page import="..." %>
import문은 JSP에서 바로 쓸 수 없기 때문에, page 지시어를 사용하여 설정해준다.
ex. <%@ page import="java.io.*" %> 를 사용하면 톰캣이 변환할 때 import java.io.* 를 넣어줌.
- 여러 클래스를 포함하는 경우
<%@ page import="java.io.*", java.lang.*" %>
또는
<%@ page import="java.io.*" %>
<%@ page import="java.lang.*" %>
session 속성 <%@ page session="..." %>
true - session 사용
false - session 미사용
session은 로그인 유지, 관리, 설정 등등의 역할을 함 / 대부분 true로 사용함
buffer 속성 <%@ page buffer="..." %>
출력 버퍼 크기 설정하는 속성이다. none 또는 버퍼 크기로 설정이 가능하다.
none으로 설정하면 출력 버퍼를 채우지 않고 웹 브라우저로 직접 보내게 된다.
버퍼크기로 설정하면 출력 버퍼에 먼저 기록한 후 웹 브라우저로 보내게 된다.
autoFlush 속성 <%@ page autoFlush=" ... " %>
자동으로 출력 버퍼를 비우는 것을 제어. 버퍼가 꽉 차면 비울지, 오버플로의 예외를 나타낼지 설정.
true로 설정하면 출력 버퍼가 채워질 때마다 웹 브라우저에 보내고 버퍼를 비움
flase로 설정하면 출력 버퍼가 가득 채워질 때 버퍼 오버플로의 예외 발생. 이 경우 개발자가 직접 처리 필요
isThreadSafe 속성 <%@ page isThreadSafe=" ... " %>
JSP 페이지에서 멀티스레드의 동작 제어. (동시 접속과 관련된 속성임)
true라면 동시 접속 가능.
false라면 동시 접속 불가능.
info 속성 <%@ page info=" ... " %>
JSP 페이지에 대한 설명을 설정. 주석문 기능과 같음. JSP 컨테이너는 info 속성을 무시함.
*JSP컨테이너 = 톰캣
errorPage 속성 <%@ page errorPage=" ... " %>
에러 발생 시, 특정 오류 페이지로 이동 / ex. <%@ page erroePage="MyError.jsp" %>
에러가 발생하면 톰캣이 자체적으로 오류창을 띄워줌. 이 오류창 안에는 오류 내용이 자세히 나와있음.
사용자가 이런 창을 보면 불안감이 듦. 공격자들은 이런 창을 보고, 해당 코드로 공격을 할 수 있음
그렇기 때문에 별도의 오류 페이지로 이동시키는 것임.
isErrorPage 속성 <%@ page isErrorPage=" ... " %>
p.98 참고
isELIgnored 속성 <%@ page isELIgnored=" ... " %>
JSP 페이지의 표현 언어 사용 여부를 설정하는 속성임. 기본값은 false이다.
true이면, 정적 텍스트로 처리 됨.
false이면, 표현 언어의 표현식 사용 가능
isScriptingEnabled 속성 <%@ page isScriptingEnabled=" ... " %>
스크립트 태그(선언문, 스크립틀릿, 표현문) 사용 여부를 설정함.
true이면, 사용한다는 뜻임.
false이면, 사용하지 않는다는 뜻임. 즉, 스크립트 태그를 사용하면 오류 발생함.
include 디렉티브 태그 <%@ include ... >
JSP페이지에 외부 파일을 포함하는 태그이다. HTML, JSP, 텍스트 파일만 들어갈 수 있고, 어디에든 선언이 가능하다.
<%@ include file="파일명" %>
같은 디렉토리에 있다면 파일명을 작성하고, 다른 디렉토리에 있다면 상대 경로로 작성한다.
이 태그의 동작 방식은 copy & poste 이다. 파일의 원본을 '그대로' 복사 붙여넣기 한 후에, 톰캣이 자바 코드(서블릿)으로 변환한다.
만약 현재 페이지의 JSP, HTML, CSS 문법과 include한 JSP, HTML, CSS가 중첩된다면 각각의 JSP문법, HTML문법, CSS문법에 따라 처리가 된다.