본문 바로가기

IT

jsp - <%@ page>

page디렉터브는 jsp페이지에 대한 정보를 입력하기 위해 사용된다.

jsp페이지가 어떤 문서를 생성하는지, 어떤 자바 클래스를 사용하고 어떤 세션에 참여하는지

출력 버퍼의 존재 여부 등 jsp 페이지를 시행하는 데 필요한 정보를 입력한다.

 

<%@ page
	info = '활동사항'
    contentType = "text/html; charset=euc-kr"
    errorPage = "/error/Eorror.jsp" 
%>

 

 

page 디렉터브의 주요 속성

 

속성 설명 기본값
contentType jsp가 생성할 문서의 MIME타입과 캐릭터 인코딩을 지정한다. text/html
pageEncoding jsp페이지 소스 코드의 캐릭터 인코딩을 지정한다.  
info jsp페이지에 대한 설명을 입력  
errorPage jsp페이지 실행 도중 에러 발생시 보여줄 페이지를 지정한다.  
import jsp페이지에서 사용할 자바 클래스를 지정한다.  
isErrorPage 현재 페이지가 에러 발생 시 보여주는 페이지인지 여부를 알려준다.
true : 에러 페이지, false : 에러페이지 아니다.
false
session jsp페이지가 세션을 사용할 지 여부 지정한다.
false일 경우 세션을 사용하지 않는다.
true
buffer jsp페이지의 출력 버퍼 크기를 지정한다.
none일 경우 출력 버퍼를 사용하지 않는다.
8kb일 경우 8kb크기의 출력 버퍼를 사용한다.
최소 8kb

 


contentType 속성의 구성

  

contentType = "type; charset=캐릭터셋"

type에는 MIME타입 갓을 사용한다.
text/html, text/xml, application/json 등

charset="캐릭터셋"부분은 생략도 가능하다.
생략시 기본값으로 iso-8859-1을 사용한다.
만약 한글을 표현하려면 euc-kr, utf-8을 사용한다.
(캐릭터 셋은 대소문자 구분을 하지않는다.)
*소스 코드 저장시 사용하는 캐릭터 인코딩가 contentType의 캐릭터 셋은 동일해야된다. 다르면 글자 깨짐*

import 속성

 

자바 클래스의 완전한 이름 대신 단순 이름을 사용하기 위해 import구문을 사용한다.

완전한 이름 (패키지 명까지 입력) : java.util.Calender 
단순한 이름 (클래스 명만 기술) : Calender 

예)
<%@ page import="java.util.Calendar" %>

-패이지 이름 뒤에 별표(*)를 사용하면 해당 패키지의 모든 타입(클래스)을 단순 이름으로 사용 가능
	<%@ page import ="java.util.*" %>
-impot속성의 값으로 여러 타입도 지정 가능( , 로 구분한다.)
	<%@ page import="java.util.*" %>

 


pageEncoding 속성

 

톰캣과 같은 웹 컨테이너는 jsp코드를 분석하는 과정에서 어떤 인코딩을 이용해서 코드를 작성했는지 검사하며, 그 결과로 선택한 캐릭터 셋을 이용하여 jsp페이지의 문자를 읽어온다.

 

- 웹 컨테이너가 jsp페이지를 읽어올때 캐릭터 셋 결정 과정

 

1. 파일이 BOM으로 시작하지 않는 경우 ( pageEncoding - contentType - iso8859-1 순서 )

 

   1-1) 기본 인코딩으로 파일을 읽고, pageEncoding속성을 검색

   1-2) pageEncoding속성이 값을 가지고 있다면, 파일을 읽을때 해당 속성 값을 캐릭터 셋으로 사용한다.

   1-3)pageEncoding 속성이 없다면, contentType속성을 검색한다.

         contentType속성이 존재하고 charset을 통해 지정되어 있다면 charset의 캐릭터 셋 값을 사용

   1-4) 모두 해당하지 않을 경우 (iso-8859-1)

 

2. 파일이 BOM으로 시작할 경우(pageEncoding)

   2-1) BOM을 이용해서 결정된 인코딩을 이용해서 파일을 읽고, Page 디렉티브 pageEncoding 속성을 검색한다.

   2-2) pageEncoding 속성의 값과 BOM을 이용해서 결정된 인코딩이 다르면 에러가 발생한다.

 

 

즉, JSP파일 자체에선 PageEncoding이 우선순위가 높고, 응답 결과로 받을 시의 인코딩은 contentType으로 지정한다.

 

 

출처 : 2. JSP - page 디렉티브 <%@ page %> (tistory.com)