19.04.28 JSP의 지시자

Back-End/JSP 2019. 4. 28. 18:00
728x90
반응형

-지시자(Directive)-

 

지시자는 클라이언트 요청에 따라 jsp 페이지가 실행이 될 때 필요한 정보를 JSP 컨테이너에게 알리는 역할을 한다.
그 역할은 jsp 페이지에 처리를 하라는 지시를 내리는 것이다.
지시자는 태그 안에서 @로 시작하며 3가지 종류가 있습니다.

 

 

  1. page

 

  2. include

 

  3. taglib

 

 

taglib 지시자는 JSP 기능을 확장할 때 사용하는 사용자 정의 태그의 집합을 의미합니다.


즉 JSP 태그(액션 태그)가 지원하지 못하는 부분을 사용자가 직접 작성하여 그 태그를 불러다 사용하겠다는 것입니다.

 

 

  <%@taglib URI="URI" prefix="tagPrefix"%>

 

 

 

 

- page 지시자 -

 

info 속성

 

info 속성은 페이지를 설명해 주는 문자열로 속성값의 내용이나 길이의 제한이 없습니다.
이 속성은 설정을 하지 않더라도 페이지의 처리 내용에는 아무런 영향을 주지는 않지만 jsp 페이지의 제목을
붙이는 것과 같은 기능을 하는 속성입니다.

 

 

  <%@page info="JSPStudy.co.kr"%>

 

 

 

 

-예제 및 출력 결과-

 

1
2
3
4
5
6
7
8
9
10
<%@ page contentType="text/html; charset=EUC-KR" import="java.util.*"
    session="true" buffer="16kb" autoFlush="true"%>
<h1>Directive Example2</h1>
<%
    Date date = new Date();
%>
현재의 날짜와 시간은?
<p />
<%=date.toLocaleString()%>
 
cs

 

 

 

 

 

language 속성

 

language 속성은 jsp 페이지의 스크립트 요소에서 사용할 언어를 지정하는 속성입니다.
만약 이 속성을 지정하지 않으면 기본값으로 Java가 지정이 됩니다.

 

 

  <%@page language="java"%>

 

 

 

contentType 속성

 

contentType 속성은 jsp 페이지의 내용이 어떤 형태로 출력을 할 것인지 MIME 형식으로 브라우저에 알려주는
역할을 하는 속성입니다.
저장할 속성 값으로는 text/html, text/plain, text/xml, text/gif등 여러 가지 값이 있으며, 기본값은 text/html의 MIME 형식입니다.

 

 

  <%@page contentType ="text/html"%>

 


또한, contentType 속성은 jsp 페이지에서 사용하는 문자 형식 (charset)을 지정하는데 사용할 수 있습니다.
charset의 기본값은 ISO-8859-1이고 한글을 지정하는 문자 형식은 EUC-KR 혹은 euc-kr로 표현합니다.

 

 

  (%@page contentType="text/html";charset="EUC-KR"%>

 

 

 

 

  MIME(Multi-Purpose-Internet Mail Extensions) 이란?

 

  인터넷 전자우편 프로토콜, 즉 SMTP를 확장하여 오디오, 비디오, 이미지, 응용 프로그램, 기타 여러 가지
  종류의 데이터 파일들을 주고받을 수 있도록 기능이 확장된 프로토콜 입니다.
  서버들은 어떤 웹 전송에서라도 시작부분에 MIME 헤더를 집어넣으며, 클라이언트들은 헤더가 나타내는
  데이터 형식(html, gif, xml 등)에 따라 이를 브라우저에서 실행합니다.

 

 

 

extends (상속)란? (java)

 

자바에서는 기존에 만들어져 있는 클래스에 새로운 기능을 추가하여 기능이 향상된 클래스를 만들 수 있습니다.
이것을 상속 이라고 합니다.
기존에 만들어져 있던 클래스를 상위 클래스 또는 부모 클래스라고 부르며 새로운 기능을 추가하여 기능이 향상된
클래스를 하위 클래스 또는 자식 클래스라고 부릅니다.
클래스를 상속받기 위해서 사용되는 키워드가 바로 extends 입니다.


 

 

  class 하위 클래스명 extends 상위 클래스명

    {
     ............
    }

 

 

 

extends 속성 (jsp)

 

jsp 페이지는 JSP Container에 의해서 Servlet로 변환이 된 후에 처리 결과를 웹 서버에 전송하여
클라이언트에게 보여주게 됩니다. 이때 extends 속성은 jsp 페이지가 Servlet 소스로 변환되는 시점에서
자신이 상속받을 클래스를 지정할 때 사용됩니다.
하지만 JSP 컨테이너가 알아서 적절한 클래스들을 상속시켜 변환해 주므로 사용할 일은 거의 없습니다.

 

 

  <%page extends="com.jspstudy.Diretive"%>

 

//com.japstudy.Directive 클래스를 상속 하겠다는 의미입니다.

 

 

import 속성

 

jsp 페이지 내에서 package 이름을 지정하지 않고 다른 클래스를 가져와서 사용하는 경우,
import 속성을 지정할 때 쓰입니다.
그리고 import 속성은 다른 page 지시자 중에 유일하게 중복 사용이 가능한 속성입니다.

 

 

session 속성

 

jsp 페이지가 HttpSession을 사용할지 여부를 지정하는 속성입니다.
이 속성 값은 true와 false로 나뉘어져 있습니다.
true일 경우에는 현재의 페이지가 세션을 유지하고 존재하지 않을 경우는 새로운 세션을 생성하여 연결되며,
false일 경우에는 세션에 연결되지 않습니다. 이 속성의 기본값은 true입니다.

 

 

  <%@page session="false"%>

 


 

 

  세션(session)이란?

 

  두 컴퓨터나 네트워크 장치의 논리적인 연결 상태이며 이와 상대되는 개념으로 링크(link)가 있습니다.
  즉 웹상에서는 브라우저(클라이언트)와 서버가 계속 연결된 상태를 session이라고 합니다.

 


 

buffer 속성

 

buffer 속성은 jsp 페이지의 출력 크기를 킬로바이트 단위로 지정하는 속성이며, 기본값은 "8KB" 입니다.
buffer 값을 "none"으로 지정하면 출력 버퍼를 사용하지 않고 jsp 페이지의 출력 내용을 즉시 브라우저로 전달하겠다는
의미 입니다.

일반적으로 "8KB" 가 대부분의 jsp 페이지에서 알맞은 버퍼의 크기입니다.
만약 jsp 페이지가 많은 양의 데이터를 출력한다면, 그에 따라 알맞게 크기를 늘려주는 것이 좋습니다.

 

 

  <%@page buffer="16kb"%>


  <
%@page buffer="none"%>

 

 

 

autoFlush 속성

 

autoFlush 속성은 jsp 페이지의 내용들이 브라우저에 출력되기 전에 버퍼에 다 채워질 경우 저장되어 있는 내용들을
어떻게 처리할 지를 결정하는 것입니다.
만약 autoFlush 속성 값을 "true"로 설정해 놓으면 버퍼가 다 찼을 경우 자동적으로 비워지게 되어 요청한
내용을 브라우저에게 전송합니다.

 

 

  <%@page autoFlush="false"%>

 

 

기본값은 "true"이며 만약 buffer 속성 값이 "none"일 경우 autoFlush 속성을 "false"로 지정할 수가 없습니다.
왜냐하면 버퍼가 저장할 공간도 없고, 또 자동적으로 출력할 수 없게끔 설정되기 때문입니다.

 

 

isThreadSafe 속성

 

isThreadSafe 속성은 하나의 jsp 페이지가 동시에 여러 브라우저의 요청을 처리할 수 있는지 여부를 설정하는 것입니다.

기본값은 "true" 이며 이 속성 값을 "false"로 지정해 놓으면 요청을 동시에 처리하지 않고 요청한 순서대로 처리합니다.
사용자의 내용을 처리하는데 상당히 오랜 시간이 걸릴 수 있으므로 충분히 처리시간을 고려하여 결정을 해야 합니다.

 

 

  <%@page isThreadSafe="false"%>

 


 

trimDirectiveWhitespaces 속성

 

trimDirectiveWhitespaces 속성은 디렉티브나 스크립트 코드로 인하여 발생되는 줄 바꿈 공백 문자를 제거하는 기능을 하는 속성입니다.

기본값은 "false"이며, trimDirectiveWhitespaces 속성 값을 'true'로 설정하면 불필요한 줄바꿈 공백 문자가 제거됩니다.

 

 

  <%page trimDirectiveWhitespaces="true"%>

 

 

 

 

-에러와 예외 사항-

 

 

  에러는 문법에러와 실행 에러로 구분이 됩니다.

  문법적인 에러는 컴파일 시에 대부분 고칠 수 있지만 실행 에러는 논리에러, 시스템 에러, 예외 사항의 발생을 의미합니다.

  논리적인 에러는 프로그램을 잘못 작성하여 예상치 못한 결과가 나오는 경우이며, 시스템 에러는 의미 그대로 하드웨어의 문제로

  발생하는 경우입니다.

  마지막으로 예외 사항은 정상적으로 프로그램이 작동하는 과정에서 만날 수 있는 에러입니다.

 

 

 

errorPage 속성

 

jsp 페이지를 처리하는 도중에 페이지에서 예외가 발생할 경우 자신이 예외를 처리하지 않고 다른 페이지에서 처리하도록 지정할 수 있는

속성입니다. 속성 값으로는 직접 예외 처리할 페이지의 로컬 URL을 적어주면 됩니다.

 

 

  <%@page errorPage="Error.jsp"%>

 

 

 

 

isErrorPage 속성

 

현재 jsp 페이지가 에러 처리를 담당하는 페이지인지 아닌지의 여부를 지정할 때 사용되는 속성입니다.

요청된 현재의 페이지가 예외를 발생하여 에러 처리를 위해서 만들어지는 에러 페이지라면 isErrorPage 속성 값을 'true'로 설정해야 합니다.

이 속성의 기본값은 'false'로, 에러를 처리하지 않는 페이지라면 설정할 필요가 없습니다.

 

 

 

  <%@page isErrorPage="true"%>

 

 

 

pageEncoding 속성

 

JSP 1.2 규약에 새로 추가된 속성으로 jsp 페이지에서 사용하는 character의 인코딩을 지정할 때 사용됩니다.

기본값으로는 ISO-8859-1로 인코딩이 됩니다.

 

 

  <%@pageEncoding="EUC-KR"%>

 

 

 

만약 pageEncoding 속성이 생략되어 있다면 contentType 속성의 charset의 값을 사용하게 됩니다.

 

 

  <%@page contentType="text/html";charset="EUC-KR"%>

 

 

 

그러나 jsp 페이지를 구현 할 때는 EUC-KR로 구현을 하고 응답에 대한 인코딩은 UTF-8로 하고 싶다면 다음과 같이 설정을 해햐 합니다.

 

 

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

pageEncoding="EUC-KR"

  %>

 

 

 

 

-예제 및 출력 결과-

 

1
2
3
4
5
6
7
8
9
10
11
12
13
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    errorPage="error.jsp"%>  <!-- 에러가 발생했을 시 처리할 페이지를 지정한다.-->
<%
    int one = 1;
    int zero = 0;
%>
<h1>Directive Example3</h1>
one과 zero의 사칙연산
<p />
one+zero=<%=one + zero%><p />
one-zero=<%=one - zero%><p />
one*zero=<%=one * zero%><p />
one/zero=<%=one / zero%><p /> <!-- 0으로 숫자를 나누는 연산이 일어났기 때문에 예외가 발생 -->
cs

 

1
2
3
4
5
6
7
<%@ page contentType="text/html; charset=EUC-KR" isErrorPage="true"%>
<!-- 에러페이지로 지정하기 위해 isErrorPage값을 true로 설정 -->
<h1>Error Page</h1>
다음과 같은 예외가 발생하였습니다.
<p />
<%=exception.getMessage()%>
 
<!-- 예외 발생 페이지의 예외 메시지를 출력-->
cs

 

 

 

 

-include 지시자-

 

여러 jsp 페이지에서 공통적으로 포함하는 내용이 있을 때 이러한 내용을 매번 입력하지 않고 별도의 파일을 저장해 두었다가 JSP 파일에

삽입하는 지시자를 include 지시자라고 합니다.

홈페이지에서 항상 공통으로 적용되는 파일을 포함시킬 때 사용이 됩니다.

예를 들어 페이지 상단에 있는 메뉴와 페이지의 밑 부분에 있는 사이트 정보, 관리자 이메일 등 이런 정보들이 있는 파일은 어떠한 페이지에서도

나오는 부분이므로 JSP 파일마다 이런 부분을 포함시킨다는 것은 비효율적인 방법입니다.

이럴 때 Top.jsp(메뉴 파일)과 Bottom.jsp(사이트 정보)를 하나씩 만들어 놓고 필요한 JSP 파일에서 include를 하면 아주 효율적인 프로그래밍을

할 수가 있습니다.

 

 

 

  < %@include file="로컬"% >

 

 

 

-예제 및 출력 결과-

 

1
2
3
4
5
6
7
8
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<h1>Directive Example4</h1>
<%@include file="directiveTop.jsp"%>
<!-- directiveTop.jsp에 있는 내용을 포함시킨다.-->
include 지시자의 Body 부분입니다.
<%@include file="directiveBottom.jsp"%>
<!-- directiveBottom.jsp에 있는 내용을 포함시킨다.-->
cs

 

1
2
3
4
5
6
7
8
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<html>
<!--include로 파일이 연결되면 한파일처럼 취급이 되서 버튼부분에서 /을 써서 닫아줄수 있다. -->
<body>
    include 지시자의 Top 부분입니다.
    <hr />
    <!-- 선긋기 -->
cs

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@page import="java.util.*"%>
<%
    Date date = new Date();
%>
<hr />
include 지시자의 Bottom 부분입니다.
<p />
<%=date.toLocaleString()%>
<!-- 현재 날짜와 시간을 로컬 타입의 폼으로 출력하고 있습니다. -->
</body>
</html>
 
cs

 

 

 

  Date 클래스

 

  Date 클래스는 java.util 패키지에 있는 클래스이며 현재의 시간, 날짜 같은 정보를 제공하는 클래스로 사용이 되어 왔습니다.

  그러나 JDK가 버전 업이 되면서 국제화 기능과 함께 각종 부가적인 기능이 추가된 java.util.Calendar 클래스와 java.text.DateFormat 클래스 사용을

  권장하고 있습니다.

 

728x90
반응형
: