Page Directive
<%@ page %>
JSP 페이지에 대한 정보는 Page Directive의 속성들을 사용해서 정의한다. 즉, 생성되는 문서 타입, 스크립팅 언어, import 할 클래스, 세션 및 버퍼의 사용 여부, 버퍼의 크기 등 JSP 페이지에서 필요한 설정 정보를 지정한다.
| 속성 | 기본값 | 사용법 | 설명 |
| info | info="설명..." | 페이지를 설명해 주는 문자열을 지정하는 속성 | |
| language | java | language="java" | JSP 페이지의 스크립트 요소에서 사용할 언어를 지정하는 속성 |
| contentType | text/html:charset=ISO-8859-1 | contentType="text/html:charset=UTF-8" | JSP 페이지가 생성할 문서의 타입을 지정하는 속성 |
| extends | extends="system.MasterClass" | 자신이 상속받을 클래스를 지정할 때 사용하는 속성 | |
| import | import="java.util.*" etc | 다른 패키지에 있는 클래스를 가져다 쓸 때 사용하는 속성 | |
| session | true | session="true" | Httpsession을 사용할지의 여부를 지정하는 속성 |
| buffer | 8kb | buffer="none" etc | JSP 페이지 출력 버퍼의 크기를 지정하는 속성 |
| autoFlush | true | autoFlush="false" | 출력 버퍼가 다 찰 경우에 저장되어 있는 내용의 처리를 설정하는 속성 |
| isThreadSafe | true | isThreadSafe="true" | 현재 페이지에 다중 스레드를 허용할지의 여부를 지정하는 속성 |
| errorPage | errorPage="error/fail.jsp" | 에러 발생시 에러를 처리할 페이지를 지정하는 속성 | |
| isErrorPage | false | isErrorPage="false" | 해당 페이지를 에러 페이지로 지정하는 속성 |
| pageEncoding | ISO-8859-1 | pageEncoding="UTF-8" | 해당 페이지의 문자 인코딩을 지정하는 속성 |
| isELIgnored | jsp 버전 및 설정에 따라 다름 | isELIgnored="true" | 표현 언어(EL)에 대한 지원 여부를 설정하는 속성 |
info
속성값의 내용이나 문자열의 길이 제한은 없다. 설정하지 않아도 해당 JSP 페이지의 처리 내용에는 아무런 영향을 미치지 않는다.
예) <%@ page info="copytright by Kim"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page info="copyright by Kim"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Page Directive 연습 - info 속성</title>
</head>
<body>
<h2>Page Directive 연습 - info 속성</h2>
<%= getServletInfo()%>
</body>
</html>

language
생략 가능하며, 생략시 기본값으로 java가 지정된다. 현재 시점에서도 스크립트 언어로서 Java만을 지원한다.
예) <%@ page language="java"%>
contentType
사용자 요청에 대한 응답 결과가 어떤 형태로 웹 브라우저에 출력될지를 MIME Type으로 지정하는 속성이다.
지정할 속성값으로는 text/html, text/plain, text/xml 등 여러 가지 형태의 문서를 생성할 수 있다.
예) <%@ page contentType="text/html"%>, <%@ page contentType="text/html;charset=UTF-8"%>
MIME(Multi-Purpose Internet Mail Extensions)
송신되는 문서의 내용을 기술하는 MIME 유형을 사용함으로써 ASCII 이외의 텍스트나 멀티미디어 데이터를 전송할 수 있도록 한다. MIME 유형의 하나인 text에는 plain, html 등 몇 가지의 세부 유형이 있는데, text/html이라는 MIME 유형은 HTML로 기록된 텍스트가 포함되어 있는 파일이라는 것을 뜻한다. MIME는 HTTP의 일부분이며, 웹 브라우저와 웹 서버는 MIME를 사용하여 그들이 송신한고 수신하는 파일을 해석한다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Page Directive 연습 - contentType 속성</title>
</head>
<body>
<h2>Page Directive 연습 - contentType 속성</h2>
<%="한글이 제대로 표시됩니다." %>
</body>
</html>

extends
JSP 페이지가 서블릿으로 변환(파싱)되는 과정에서 상속받을 클래스를 지정할 때 사용한다.
그러나 이 작업은 별로 필요 없다. JSP 컨테이너(톰캣)가 알아서 적절한 클래스들을 상속시켜 변환해 주기 때문이다.
예) <%@ page extends="com.samyangm.ClassDef"%>
import
Page Directive 중에 유일하게 한 페이지 내에 여러 번 기술이 가능한 속성이다.
예) <%@ page import="java.util.*, javasqL*"%>, <%@ page import="java.io.*%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.sql.Timestamp"%>
<%@ page import="java.text.SimpleDateFormat"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Page Directive 연습 - import 속성</title>
</head>
<body>
<h2>Page Directive 연습 - import 속성</h2>
<%
Timestamp now = new Timestamp(System.currentTimeMillis());
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); // mm은 minute 이므로 MM 사용
String strDate = format.format(now);
%>
오늘은 <%=strDate%> 입니다.
</body>
</html>

session
네트워크 환경에서 사용자 간 또는 컴퓨터 간의 대화를 위한 논리적인 연결을 의미한다. 속성 값이 true일 경우에는 현재의 JSP 페이지가 세션을 사용하는 것으로 세션을 유지한다. 만일 세션이 존재하지 않을 경우에는 새로운 세션을 생성하여 연결한다. 속성 값이 false일 경우 세션을 사용하지 않는다.
예) <%@ page session="false"%>
buffer
속성 값을 none으로 지정한 경우 출력 버퍼를 사용하지 않는다는 뜻이다. 기본값으로 8kb를 사용하는 이유는 개발자들의 오랜 경험 끝에 JSP 페이지에서 가장 타당한 크기로 인식되었기 때문이다.
예) <%@ page buffer="none"%>
autoFlush
JSP 페이지의 내용들이 웹 브라우저에 출력되기 전에 출력 버퍼가 다 찰 경우, 저장되어 있는 내용들을 어떻게 처리할지를 지정하는 속성이다. 속성값이 true일 경우 버퍼가 다 찼을 때 자동으로 버퍼의 내용이 웹 브라우저에 출력되고, 출력 버퍼는 비워진다. buffer 속성 값을 none으로 지정한 경우 autoFlush 속성 값은 false로 지정할 수 없다. 왜냐하면 버퍼를 사용하지 않으므로 출력할 내용을 바로바로 화면에 출력해야 하기 때문이다.
isThreadSafe
JSP 페이지에서는 하나의 요청을 하나의 스레드로 처리하기 때문에 한 페이지에서 여러 사용자의 요청을 동시에 받아들일 수 있다. 속성값이 true 인 경우 해당 JSP 페이지가 여러 사용자 요청을 동시에 받아들일 수 있다. 속성값이 false인 경우 다수 사용자의 요청을 순서대로 처리하므로 웹 브라우저의 요청을 처리하는데 많은 시간이 걸리게 된다.
Thread
프로그램 내에서 실행되는 가장 작은 단위의 작업 흐름을 의미. 프로세스 내에 있는 것으로 프로세스가 이미 메모리 할당을 받았기 때문에 스레드는 메모리 자원을 사용하지 않는다. 또한 하나의 프로세스 내에서 여러 스레드가 동시에 작업을 수행하기 때문에 프로그램의 수행 속도도 빨라진다. JSP의 경우 하나의 페이지에 대해 하나의 프로세스만 설정되고, 다수의 사용자 요청은 스레드로 처리되어 사이트가 많은 사용자의 요청을 받더라도 서비스의 시간이 많이 걸리지 않도록 되어 있다.
errorPage
JSP 페이지를 처리하는 도중에 해당 페이지에서 예외(Exception)가 발생할 경우, 예외를 처리할 페이지를 지정하는 속성이다. 해당 페이지에서 예외를 처리하지 않고 errorPage 속성값으로 지정한 다른 페이지에서 예외를 처리한다.
예) <%@ page errorPage="erroPro.jsp"%>
하지만 JSP 2.0 부터는 위와 같은 방법으로 예외를 처리하지 않는다. 실제로 톰캣 버전이 5.5.9 이상이면 위의 속성을 인식하지 못한다. JSP 2.0 버전에서의 예외처리 권고안은 web.xml 파일에서 <error-page> 태그를 사용해 처리하도록 되어 있다.
isErrorPage
요청된 현재의 페이지가 발생된 예외를 처리하는 페이지일 때 속성값을 true로 지정한다. 일반적인 JSP 페이지는 예외를 처리하는 페이지가 아니므로 기본값이 false이다. errorPage 속성과 마찬가지로 현재는 별로 사용되지 않는다.
예) <%@ page is ErrorPage="true"%>
pageEncoding
JSP 페이지에서 사용하는 문자의 인코딩을 지정할 때 사용된다. 생략 시 기본값인 ISO-8859-1을 사용한다. 한글을 처리할 때는 UTF-8을 사용한다.
예) <%@ page pageEncoding="UTF-8"%>
'Web Programming > JSP' 카테고리의 다른 글
| [JSP] taglib Directive (1) | 2024.09.30 |
|---|---|
| [JSP] include Directive (1) | 2024.09.30 |
| [JSP] JAVA 기초 문법 (0) | 2024.09.27 |
| [JSP] JSP 동작원리(톰켓)와 서블릿 (2) | 2024.09.27 |
| [JSP] 이클립스 설치 (3) | 2024.09.26 |