[JSP] JSP directive 정리

정예은·2020년 1월 9일
1

web

목록 보기
9/27

JSP directive

page directive
include directive
taglib directive
syntax: <%@ directive attribute="value" %>

page directive

<%@ page attribute="value" %>

Attributes of JSP page directive

import
contentType
extends
info
buffer
language
isELIgnored
isThreadSafe
autoFlush
session
isThreadSafe
pageEncoding
pageEncoding
isErrorPage

import

class나 interface나 페키지의 모든 멤버를 import 하는데 사용

<%@ page import="java.util.Date" %>  
Today is: <%= new Date() %>

contentType

HTTP response의 MIME(Multipurpose Internet Mail Extension)을 정의
default value: "text/html;charset=ISO-8859-1"

<%@ page contentType=application/msword %> 

extends

일반적ㅇ니 servlet으로부터 상속받을 부모 클래스를 정의, 드물게 쓰임

info

Servlet interface의 getServletInfo()를 사용해서 검색되는 JSP 페이지 정보 설정

<%@ page info="composed by yeeun" %> 
public String getServletInfo() {  
  return "composed by Sonoo Jaiswal";   
}  

buffer

JSP 페이지에서 생성 된 출력을 처리하기 위해 버퍼 크기를 킬로바이트 단위로 설정
버퍼의 기본 크기: 8Kb

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

language

JSP 페이지에서 사용되는 스크립팅 언어를 지정
기본값: java

isELIgnored

jsp의 EL (Expression Language)을 무시할 수 있음
default 값: false(기본적으로 EL이 사용됨)

<%@ page isELIgnored="true" %>

isThreadSafe

서블릿과 JSP 모두 다중 스레드
JSP의 동작 제어하기 위해서 페이지 지시문의 isThreadSafe 속성을 사용 가능
default 값: true
False로 설정: 웹 컨테이너가 여러 요청을 직렬화
다른 요청을 전달하기 전 JSP가 요청에 대한 응답을 완료할 때까지 기다림

<%@ page isThreadSafe="false" %>

이런 식으로 false로 설정하면

public class SimplePage_jsp extends HttpJspBase implements SingleThreadModel{  
//......  
}  

이런 식으로 survlet 생성됨

errorPage

오류 페이지를 정의하는 데 사용
현재 페이지에서 예외가 발생하면 오류 페이지로 리디렉션

<% @ page errorPage = "myerrorpage.jsp"  %>  
  
 <% =  100 / 0  %>

isErrorPage

현재 페이지가 오류 페이지임을 선언하는 데 사용
예외 개체는 오류 페이지에서만 사용 가능
<% @ page isErrorPage = "true" %>


JSP Include Directive

jsp 파일, html 파일 또는 텍스트 파일 일 수 있는 모든 자원의 내용을 포함하는 데 사용
include 지시문은 페이지 변환시 포함 된 자원의 원래 컨텐츠를 포함
(jsp 페이지는 한 번만 변환되므로 정적 자원을 포함하는 것이 좋음)
장점: 코드 재사용성
syntax: <%@ include file="resourceName" %>
ex) header.html file include 해야 할 때 : <%@ include file="header.html" %>

include 지시문에는 원본 내용이 포함되므로 실제 페이지 크기는 런타임에 커짐

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>include direction</title>
</head>
<body>
<h3>date.jsp include 결과 </h3>
date.jsp 를 통한 현재 시각은? <hr>
<%@ include file="date.jsp" %>
</body>
<%@ page import="java.util.Calendar,java.text.*" %>
<br>
<p>현재 시간: <%= java.util.Calendar.getInstance().getTime() %></p>

JSP Taglib directive

많은 태그를 정의하는 태그 라이브러리를 정의하는 데 사용(태그 라이브러리에 정의된 태그를 자겨와서 사용할 수 있게 방법을 제공)
TLD (Tag Library Descriptor) 파일을 사용하여 태그를 정의
맞춤 태그 섹션에서는이 태그를 사용하므로 맞춤 태그에서 배우는 것이 좋음

uri, prefix의 두개의 요소를 가짐
syntax: <%@ taglib uri="태그라이브러리가 있는 주소" prefix="태그라이브러리를 나타내는 이름" %>
예를 들어 prefix가 "mytag"라고 지정되었다면 JSP안에서 <myteg:tagname .../> 를 만나면 URI에 지정된 태그 라이브러리 서술자를 참조하여 해당 태그를 처리한
위의 두가지 요소를 지정하지 않으면 오류가 발생

0개의 댓글