티스토리 뷰
지시자(directive)
디렉티브(Directive)는 웹 컨테이너가 JSP 페이지를 서블릿 클래스로 변환할 때 필요한 여러 가지 정보를 지정할 때 사용됩니다.
<%@ 디렉티브이름 속성1="값1" 속성2="값2" %>
<%@ page contentType="text/html; charset=euc-kr"%>
위 코드의 디렉티브 이름은 page가 되고 contentType과 charset이라는 속성을 사용합니다.
JSP에서 사용할수 있는 지시자는 다음과 같습니다.
이 세 지시자 모두 <%@ 로 시작하고 %>로 끝나야 한다.
<%@ 다음에는 바로 지시자 이름이 와야 하고, 지시자 이름 다음에는 여러 애트리뷰트가 올 수 있다.
page | JSP 페이지에 대한 정보를 지정합니다. |
taglib | JSP 페이지에서 사용할 태그 라이브러리를 지정합니다. |
include | JSP 페이지의 특정 영역에 다른 문서를 포함합니다. |
ex)
<% page contentType="text/html" charset="UTF-8" %>
<%@ page import="java.util.Date" %>
1. page 지시자
JSP 전체에 적용되는 정보를 기술하기 위해 사용된다.
contentType |
JSP가 생성하는 문서의 종류와 그 문서를 웹 브라우저로 전송할 때 사용되는 인코딩 타입 |
import |
스크립팅 요소 안에서 사용할 자바 클래스와 인터페이스를 임포트하기 위해 사용하는 애트리뷰트 |
buffer |
출력 버퍼의 크기 |
autoFlush |
출력 버퍼가 모두 찼을 때 동작 |
isThreadSafe |
JSP 싱글-스레드 모드로 작동하게 만들기 위해 필요한 애트리뷰트 |
session |
JSP 세션 참여 여부 |
errorPage |
에러를 처리할 JSP의 URL |
isErrorPage |
에러를 처리하는 JSP 페이지인지 여부 |
isULIgnored |
익스프레션 언어의 무시/처리 여부 |
contentType 는 JSP가 생성하는 문서를 웹 브라우저로 전송할 때 사용하는 인코딩 방식을 지정하기 위해서 사용합니다.
contentType과 charset 두값은 세미콜론으로 구분해서 써야합니다.
<%@ page contentType="text/html; charset=utf-8" %>
2. import
ex) <%@ page import="java.util.Date" %>
java.util 패키지의 Date클래스를 임포트
<%@ page improt="java.util.*" %>
와일드 카드를 사용
import 애트리뷰트는 여러 클래스/인터페이스 이름을 콤마로 구분해서 쓸 수 있습니다.
<%@ page import="java.util.ArrayList, java.io.* %>
참고) JSP는 아래의 패키지를 자동으로 import 합니다.
javax.servlet
javax.servlet.jsp
javax.servlet.http
3. include
다른 JSP 또는 HTML문서를 불러다가 현재 JSP 페이지의 일부로 만들기 위해 사용합니다.
불러올 대상은 file애트리뷰트를 이용해서 지정할 수 있으며, 이 애트리뷰트 값은 JSP를 기준으로 상대적 URL로 해석됩니다.
ex)
<%@ include file="Today.jsp" %>
현재 디렉토리에 있는 Today.jsp 를 include 합니다.
<%@ include file="sub1/Today.jsp" %>
sub/디렉터리에 있는 Today.jsp를 include 합니다.
<%@page contentType="text/html; charset="utf-8" %>
<%@page import="java.util.*"%>
<% GregorianCalendar now = new GregorianCalendar(); %>
<%= String.format("%TY년 %Tm월 %Td일", now, now, now) %>
4. taglib
taglib는 액션을 사용할 때 필요합니다.
액션은 기본적으로 사용할 수 있는것도 있고, 그 액션이 속한 라이브러리를 설치해야만 사용할 수 있는것도 있습니다.
taglib 지시자는 후자의 경우에 필요합니다.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
액션이 속하는 라이브러리를 지정하는 지시자
출력버퍼와 응답
JSP 페이지는 응답데이터를 바로 브라우저로 전송하지 않습니다. 출력버퍼에 임시로 저장했다가 한번에 웹 브라우저로 전송합니다. 한번에 데이터를 보내면 아래와같은 장점을 가집니다.
- 데이터 전송 성능 향상
- JSP 실행 도중에 버퍼를 비우고 새로운 내용 전송 가능
- 버퍼가 다 차기 전에 헤더 변경 가능
네트워크 뿐만 아니라 대부분의 데이터 전송에서는 작은 데이터를 여러본 보내는것보다 큰 데이터를 한번에 보내는것이 효율적입니다.
HTTP 구조상 헤더가 데이터의 가장 앞부분에 기술되어야하는데 즉시 데이터를 보내면 나중에 헤더를 변경하고 싶어도 변경할 수 없습니다.
JSP 에서 버퍼 크기 변경하기
JSP에서 따로 버퍼의 크기를 지정한적은 없지만 기본적으로 8k이사의 버퍼를 사용하도록 설정되어 있습니다.
만약 버퍼의 크기를 변경하고싶다면 아래의 코드를 작성하면 됩니다.
<%@ page buffer = "4kb" %>
버퍼의 크기는 kb단위로 지정할 수 있습니다. 버퍼를 사용하고싶지 않다면 "none" 값을 사용하면 됩니다.
<%@ page buffer = "none" %>
none으로 설정하면 다음과 같은 기능을 사용하는데 제한됩니다.
- <jsp:forward> 기능을 사용할 수 없습니다
- 곧바로 전송되기 때문에 출력한 내용을 취소할 수 없습니다
autoFlush
JSP의 page 지시자는 autoFlush 속성을 제공합니다. 이 속성을 사용하면 출력버퍼가 전부 찼을때 어떻게 행동할지 결정할 수 있습니다.
true: 버퍼가 다 차면 버퍼를 플래시하고 계속해서 작업을 진행
false: 버퍼가 다 차면 exception을 발생하고 작업을 중지
'JSP &Servlet' 카테고리의 다른 글
JSP tomcat 에서 GET방식 URI 인코딩 처리 (0) | 2021.04.24 |
---|---|
JSP request 기본객체 (0) | 2021.04.24 |
페이지 모듈화와 요청 흐름 제어 (0) | 2018.08.04 |
JSP 내장변수 (implicit variable) (0) | 2018.08.03 |
스크립틀릿(scriptlet) (0) | 2018.08.01 |