"<%" 다음에 에트(@)표시로 시작해서 정의하는 문을 지시문이라고 한다.
지시문은 jsp 컨테이너에게 메시지를 보내는데 지시자에는 "page", "include", "taglib" 등이 있다.
사용형식 : <%@ 지시자 속성1="값" 속성2="값" ... %>
jsp 지시문에서 사용할 수 있는 지시자는 다음과 같다.
지시자 - 설명 - 정의할 수 있는 속성
- page : 현재 jsp 페이지의 속성을 정의한다.
(language, import, buffer, autoFlush, errorPage 등)- include : jsp 파일이 서블릿으로 변환되는 시점에서 포함할 파일을 지정한다. 즉 컴파일시에 포함된다. - (file)
- taglib : jsp 페이지내에서 사용된 사용자 태그를 위한 라이브러리와 접두사를 정의한다. - (url이나 호스트이름, prefix)
page 지시자에서 지정할 수 있는 속성의 의미는 다음과 같다.
속성 - 설명
- language="언어" - jsp 스크립트 코드에서 사용되는 프로그래밍 언어를 지정한다. 기본값은 'java'로 생략 가능하다.
<%@ page language="java" %>
- import="패키지이름.*" & import="패키지이름.클래스이름" - 포함(import)할 패키지와 클래스를 지정한다. 여러 개를 지정할 경우에는 쉼표(,)로 구분한다. java에서의 import문과 동일하다.
<%@ page import="java.util.*"%> <%@ page import="java.io.*,java.util.Vector,java.sql.*"%>
- buffer="버퍼링여부 | 버퍼크기" - 출력 스트림을 버퍼에 저장할지 여부를 결정한다.
기본8kb이다. autoFlush 속성과 함께 사용되며 "none" 또는 "8kb", 그리고 직접 크기를 "kb" 단위로 지정한다.
버퍼(Buffer)란
버퍼란 임시 저장 공간을 의미 합니다. 임시 저장 공간이라고 해서 쌩뚱맞게 보일 수 있지만 정확히 말하면 A와 B가 서로 입출력을 수행하는데에 있어서 속도차이를 극복하기 위해 사용하는 임시 저장 공간을 의미 합니다.<%@ page buffer="8KB" %> //autoFlush 사용버전 <%@ page buffer="8kb" autoFlush="false" %>
- autoFlush="논리값" - "true(기본 값)" 로 설정하면, 버퍼가 채워진 경우 예외를 발생시키지 않고, 자동으로 버퍼의 내용을 비운다(출력한다).
autoFlush 속성 : 사용시 'true', 사용 안할시 'false' 설정.
- 'ture'일때 : 버퍼가 가득 차면 버퍼 내용을 전송하고 버퍼를 비움.
- 'false'일때 : 버퍼가 가득 차면 예외발생 후 작업을 중지시키고 에러페이지 출력.
리다이렉트는 웹 서버가 웹 브라우저에게 다른 페이지로 이동하라고 응답하는 기능이다.<%@ page autoFlush="true" %>
- errorPage="오류제어페이지경로" -현재 jsp 페이지에서 오류가 발생했을 때 실행되는 페이지를 지정한다. 즉 오류를 데어하는 페이지를 따로 작성한 경우에 사용된다.
<%@ page errorPage="../에러처리페이지" %>
include 지시자
jsp의 현제 페이지에 다른 자원을 포함시키고자 할 때 사용한다.
지시자 include에 대한 예시다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%@ include file="header.jsp" %>
<div>
main content
</div>
<%@ include file="footer.jsp" %>
</body>
</html>

이렇게 파일이 있고 위 코드와 같이 작성하고 실행을 시킨다면 아래와 같이 실행이 된다.

'지시자 include' 는 단순하게 소스의 내용이 텍스트로 포함되어 컴파일된다.
'액션 태그 include' 는 페이지의 처리결과를 포함한다는 점에서 '지시자 include'와 차이점이 있다.
- 지시자 include
1) 처리시간 : jsp 파일을 자바 소스로 변환할 때 처리
2) 기능 : 현재 파일에 삽입
3) 데이터 전달 방법 : 페이지 내의 변수를 선언한 후, 변수에 값 저장
4) 용도 : 다수의 jsp페이지에서 공통으로 사용되는 코드나 저작권과 같은 문장을 포함- 액션 태그 include
1) 처리시간 : 요청시간에 처리
2) 기능 : 별도의 파일 요청 처리 흐름을 이동
3) 데이터 전달 방법 : request 기본객체나 <jsp:param>을 이용한 파라미터 전달
4) 용도 : 화면의 레이아풋의 일부분을 모듈화할 때 주로 사용
JSP 페이지 내에서 어떤 동작을 하도록 지시하는 태그입니다.
대표적인 액션 태그만 살펴본다면
- forward
forward는 현재 페이지를 다른 페이지로 전환할 때 사용됩니다.<jsp:forward page="second.jsp"/>
이처럼 클라이언트에게 보여지는 페이지 URL은 first.jsp라는 특징이 있습니다.
- param(패럼)
-forward 및 include 태그에 데이터 전달을 목적으로 사용되는 태그이다.
-name(이름)과 value(값)으로 이루어져 있다.
-단독으로 사용되지 못하며 <jsp:include>나 <jsp:forward>의 자식 태그로 추가한다.
-다른 페이지에 여러 개의 정보를 전송해야 할 때는 다중의 param 액션 태그를 사용한다.
예제){first.jsp} <jsp:forward page="second.jsp> <jsp:param name="id" value="abcd" /> <jsp:param name="pw" value="1234" /> </jsp:forward>{second.jsp} <% String id = request.getParameter("id"); String pw = request.getParameter("pw"); %>
- include
jsp 페이지 내에 다른 페이지를 삽입하는 액션 태그입니다.<jsp:include pagr="second.jsp" />