JSP

[JSP] 2.디렉티브 태그

myeongju 2024. 7. 21. 16:22
반응형

디렉티브 태그란 ?

JSP 페이지를 어떻게 처리할 것인지를 설정하는 태그

JSP페이지가 서블릿 프로그램에서 서블릿 클래스를 변환할 때, JSP페이지와 관련된 정보를 JSP컨테이너에 지시하는 메시지

 

 

디렉티브 태그 형식 설명
page <%@ page ... %> JSP 페이지에 대한 정보를 설정한다
include <%@ include ... %> JSP 페이지의 특정 영역에서 다른 문서를 포함한다.
taglib <%@ taglib ... %> JSP 페이지에서 사용할 태그 라이브러리를 설정한다.

 

 

page 디렉티브 태그

현재 JSP 페이지에 대한 정보를 설정하는 태그

일반적으로 JSP 페이지의 최상단에 선언하는 것을 권장함

<%@ page contentType="text/html;charset=UTF-8" language="java" ... %>

 

속성 설명 기본값
language 현재 JSP 페이지가 사용할 프로그래밍 언어를 설정 java
contentType 현재 JSP 페이지가 생성할 문서의 콘텐츠 유형을 설정 text/html
pageEncoding 현재 JSP 페이지의 문자 인코딩을 설정 ISO-8859-1
import 현재 JSP 페이지가 사용할 자바 클래스를 설정  
session 현재 JSP 페이지의 세션 사용 여부를 설정 true
buffer 현재 JSP 페이지의 출력 버퍼 크기를 설정 8KB
autoFlush 출력 버퍼의 동작 제어를 설정 true
inThreadSafe 현재 JSP 페이지의 멀티스레드 허용 여부를 설정 true
info 현재 JSP 페이지에 대한 설명을 설정  
errorPage 현재 JSP 페이지에 오류가 발생했을 때 보여줄 오류 페이지를 설정  
isErrorPage 현재 JSP 페이지가 오류 페이지인지 여부를 설정한다. false
isELIgnored 현재 JSP 페이지의 표현 언어(EL)지원 여부를 설정 false
isScriptingEnabled 현재 JSP 페이지가 스크립트 태그 사용 여부를 설정  

 

 

pageEncoding 속성

현재 JSP 페이지의 문자 인코딩 유형을 설정하는 데 사용됨

문자 인코딩 유형의 기본 값 : ISO-8859-1

 

import 속성

  • 현재 JSP 페이지에서 사용할 자바 클래스를 설정
  • 둘 이상의 자바 클래스를 포함하는 경우 , 로 구분해서 여러 개의 자바 클래스를 설정
  • 여러 개의 클래스를 각각 별도로 설정도 가능

 

예시

<% page import=”java.io.*” %>
<%page import = “java.io.*, java.lang.*” %>

<% page import=”java.io.*” %>
<% page import=”java.lang.*” %>

보통 지시자는 맨 위에 넣는다. 태그 중간에는 넣지 X

 

ex)

<%@ page contentType="text/html; charset=UTF-8"
                 import = "java.util.Date"
%>

<!DOCTYPE html>
<html>
<head>
        <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <%= new Date()%>
</body>
</html>

Date 객체는 Deprecated 되어있으므로 java.time.LocalDateTime을 사용하자

 

<%@ page contentType="text/html; charset=UTF-8"
                 import = "java.time.LocalDateTime"
%>

<!DOCTYPE html>
<html>
<head>
        <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <%= LocalDateTime.now()%>
</body>
</html>

주의 ) 값 출력을 제외한 모든 <%%>는 태그 안에 넣으면 관리가 불가능하므로, 중간에 절대 넣으면 안된다.

 

사용자가 로그인을 하는 경우, 로그인 한 상태가 유지되어야한다. HTTP 프로토콜은 클라이언트의 상태 정보를 관리해주지 않기 때문에 상태 정보를 별도로 관리해주기 위해 쿠키, 세션을 사용한다.

  • 쿠키 : 클라이언트에 저장
  • 세션 : 서버에 저장

 

session 속성

현재 JSP 페이지의HTTP 세션 사용 여부를 설정

 

기본값 : true

  • if) false를 사용할 경우, 내장객체인 session을 사용할 수 없다는 의미이므로 세션을 유지 관리할 수 없음
<% page session="true" %>

 

Buffer 속성

  • 현재 JSP 페이지의 출력 버퍼 크기를 설정
  • 속성 값 : none과 ‘버퍼 크기’로 설정
    • 버퍼 크기 : 출력 버퍼에 먼저 기록한 후 웹 브라우저로 보냄

 

출력 버퍼 크기를 none으로 설정

<% page buffer="none"%>

 

출력 버퍼 크기를 32KB로 설정

<% page buffer="32KB"%>

 

 

autoFlush 속성

자동으로 출력 버퍼를 비우는 것을 제어

 

 

isThreadSafe 속성

멀티 스레드의 동작을 제어하는데 사용

autoFlush 속성, isThreadSafe 속성은 설정할 일 없으므로 알아만 두자.

 

 

info 속성

  • 현재 페이지에 대한 설명 설정
<% page info = "Home Page JSP"%>

 

 

errorPage 속성

  • 실행되는 동안 오류가 발생하면 특정 오류 페이지로 이동하는데 사용
<% page errorPage="MyErrorPage.jsp"%>

 

 

isErrorPage 속성

현재 JSP 페이지가 오류 페이지인지 여부를 설정하는 데 사용됨

기본값 : false

 

특징

  • 예외 처리를 위한 내장 객체인 exception 변수를 사용할 수 없음
  • true로 설정 시 현재 JSP 페이지는 오류 페이지가 됨

현재 JSP 페이지가 오류 페이지가 되도록 true 설정

<%@ page isErrorPage="true" %>

 

isELIgnored 속성

현재 JSP 페이지의 표현 언어 사용 여부를 설정하는 데 사용됨

기본값 : false

 

true로 설정 시 정적 텍스트로 처리

isELIgnored 속성 사용 예 : 표현 언어를 처리하지 않기 위한 true 설정

<%@ page isELIgnored="true" %>

 

 

isScriptingEnabled 속성

스크립트 태그(선언문, 스크립틀릿, 표현문) 사용 여부를 설정하는 데 사용됨

 

스크립트 태그를 사용하지 않기 위한 false 설정

<%@ page isScriptingEnabled="false" %>

 

 

include 디렉티브 태그

현재 JSP 페이지의 특정 영역에 외부 파일의 내용을 포함하는 태그

 

이런 태그는 왜 필요할까 ?

웹 페이지의 경우, 헤더, 푸터, 사이드바는 항상 동일하다. 항상 새로 같은 코드를 넣어서 사용하면 유지보수가 힘들어지기 때문에 사용한다.

<% include file="파일명" %>

 

file 속성 값

  • 현재 JSP 페이지에 포함할 내용을 가진 외부 파일명
  • 이때 외부 파일이 현재 JSP 페이지와 같은 디렉터리에 있으면 파일명만 설정
  • OR 전체 URL(또는 상대 경로)을 설정

 

⚠️ HTML은 한글 문제가 발생할 수 있으므로 사용 X

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>include directive Example</title>
</head>
<body>

     <H2>include directive Example</H2>
     <hr />

     <%@ include file="contents.jsp" %>
     <hr />
     <%@ include file="contents.html" %>

</body>
</html>

contents.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"%>

contents JSP문서의 내용입니다!

contents.html

contents HTML문서의 내용입니다!

 

 

 

Taglib 디렉티브 태그

태그 라이브러리를 설정하는 태그

JSTL : 태그 형식으로 다양한 여러 동적인 처리 수행

 

반응형