JSP

[JSP] (3)JSP의 이해

EunaSon 2022. 4. 27. 00:00

JSP 지시자(Directive)

해당 페이지의 속성 지정 시 사용함.

일반적인 JSP 태그를 이용하는 방법과 XML 형식의 태그를 이용하는 방법이 있음.

페이지 지시자는 <%@   %> 로 표현함.

 

PAGE 지시자

info 속성

거의 사용x, 작성자, 버전, 저작권 등을 넣어준다

language 속성

해당 페이지에서 사용할 수 있는 스크립팅 언어를 지정할 때 사용함. JSP 엔진의 특성에 따라 지원되는 형식이 다르다.

기본값은 java이다.

contentType 속성

JSP 페이지가 생성하는 응답의 MIME 타입을 지정할 때 사용한다. 기본값은 text/html 이다.

현재 JSP 페이지에 사용할 문자집합을 지정할 수도 있다.

extends 속성

jsp 페이지를 해석하여 만들어낼 jsp 서블릿 클래스가 상속받을 수퍼클래스를 지정한다.

extends 속성은 기본값이 없으므로 해당 jsp 페이지는 jsp 컨테이너의 번역기를 통해 해당 페이지에서 사용할 가장 적절한 ServletClass를 자체적으로 고르게 된다.

이 속성을 지정하지 않아도 해당 jsp 컨테이너가 서블릿으로 해석할 시점에 자신의 엔진에 가장 최적화 된 클래스를 자동으로 상속시켜 주기 때문에 거의 사용하지 않는다.

 

* 컨테이너 : 서블릿, jsp와 같은 웹서버 애플리케이션들은 동적 컨텐츠를 생성하는 웹 컴포넌트로, 웹 컴포넌트를 저장하는 저장소 역할, 메모리 로딩, 객체 생성 및 초기화 등 서블릿의 생명주기를 관리하고 jsp를 서블릿으로 변환하는 기능을 수행하는 프로그램.

* 서블릿 컨테이너 : 서블릿을 수행하려면 자바 수행 환경/ 웹 서버 / 서블릿 컨테이너 의 환경을 구성해야 한다. 서블릿 컨테이너는 클라이언트 요청에 따라 서블릿을 수행하는 프로그램이다.

* JSP 컨테이너 : jsp를 서블릿으로 변환하는 프로그램. jsp 컨테이너도 서블릿으로 구현된 프로그램이다. jsp 컨테이너는 jsp 파일을 서블릿 소스로 변환 및 컴파일을 담당하며, 변환된 서블릿의 수행은 서블릿 컨테이너가 담당한다.

import 속성

해당 페이지에 특정 클래스/ 패키지를 포함할 때 사용한다. 다른 속성과 달리 한 페이지 내에 여러 번 반복되어 지정되어도 상관 없다.

session 속성

해당 jsp 페이지가 세션 관리에 가담하는지 여부를 지시할 때 사용한다. true가 기본값. 이후 세션에 관해 자세히 다룰것.

buffer 속성

jsp 페이지의 버퍼 출력을 조정하는 역할. out 객체에 대한 버퍼링에 관해 설정 할 수 있게 해준다.

특정 jsp 페이지의 응답을 해석하던 중 다른 페이지로 이동하는 경우 기존의 버퍼에 쌓여있던 응답들을 clear 시키고 다른 페이지로 이동 후 새롭게 출력 버퍼에 버퍼링 할 수 있게 해준다.

false로 설정 시 완전히 해석되지 않은 페이지의 내용을 브라우저로 출력하게 된다.

autoFlush 속성

buffer 출력에 관여하는 속성이다. 출력 버퍼가 꽉 찼을 경우 jsp 컨테이너의 동작을 설정해준다. true로 지정된 경우 출력버퍼가 꽉 차게 되면 자동으로 웹 브라우저로 출력하거나 페이지의 해석이 끝난 경우 자동으로 비워진다.

false로 지정된 경우 버퍼가 가득 차게 되면 버퍼를 비우지 않고 예외를 발생시킨다.

isThreadSafe 속성

해당 jsp 페이지가 스레드에 안전한 페이지인지 명시하는 부분이다. 보통 jsp 컨테이너는 각각의 클라이언트 요청을 하나의 스레드로 보게 되므로 스레드 이슈가 발생할 수 있는데, <%!  %> 태그 안에 변수를 넣게 되면 새로운 사용자가 같은 페이지 요청 시 변수의 값이 바뀌게 된다. 이를 해결하기 위해 isThreadSafe 속성을 지정하거나 synchronized 로 동기화 시켜줘야 한다.

errorPage 속성, isErrorPage 속성

jsp 페이지에서 exception이 발생할 경우 errorPage 에 지정된 페이지로 던지고, isErrorPage 속성은 던져진 exception을 받아주는 역할을 한다.

보통 jsp 페이지는 isErrorPage 속성이 false 이지만 exception을 받아주는 페이지는 true여야하고,

에러가 발생하는 페이지에서는 errorPage 속성으로 isErrorPage="true" 속성인 페이지를 지정하여야 한다.

pageEncoding 속성

해당 jsp 페이지 내부의 문자셋을 지정하는 부분이다.

 


include 지시자

외부의 특정 jsp 페이지, html 페이지 등을 해당 파일에 포함시키는 역할을 해주는 지시자이다.

주의할 점은 로컬 서버 내의 절대경로인지/ 현재 페이지를 기준으로 한 상대경로인지 를 구별해줘야 한다.

( '/' 가 들어가면 절대경로)

include 되는 파일에서 선언한 변수를 include 하는 파일에서도 사용할 수 있다.

변수의 사용에 있어 모호한 문제가 발생할 수 있지만, 잘 사용하면 반복되는 코드를 하나의 파일에 몰아주어 공통 모듈로 사용할 수 있다.

또한 include 되는 파일은 include 하는 파일의 일부분으로 속하기 때문에 page 지시자에 나오는 여러가지 페이지 속성들을 포함할 수 없다.

 


taglib 지시자

태그 라이브러리는 jsp 페이지의 기능을 확장하기 위해 사용될 수 있는 커스텀 태그를 모아놓은 것이다.

'JSP' 카테고리의 다른 글

[JSP] (6)쿠키와 세션  (0) 2022.05.08
[JSP] (5)JSP Action 태그  (0) 2022.05.08
[JSP] (4)JSP 내장객체  (0) 2022.05.02
[JSP] (2)JSP 태그  (0) 2022.04.26
[JSP] (1)Script 언어의 이해  (0) 2022.04.26