디렉티브 태그는 JSP 페이지를 어떻게 처리할 것인지를 설정하는 태그.
디렉티브 태그는 총 세 종류이며, 모두 <%@ ···· %> 를 사용한다!
또한, 각 디렉티브 태그는 다양한 속성을 가진다.

1. page 디렉티브 태그
1) 현재 JSP 페이지에 대한 정보를 설정하는 태그
2) JSP 페이지의 어디에서든 선언할 수 있지만, 일반적으로 최상단에 선언하는 것을 권장!!


(language > taglib > import 순으로 작성해 주는 것이 좋다.)
page 디렉티브 태그의 속성은 여러가지가 있지만,
그 중 errorPage="페이지경로" 은 에러가 났을 때 해당 페이지로 이동한다.
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ page isErrorPage="true"%>
<%@page import="java.io.PrintWriter"%>
<!DOCTYPE html>
<html>
<head>
<title>서비스 문제 발생</title>
</head>
<body>
<!-- /images : WebContent > images 폴더 -->
<img style="width : 100%; height : 100%" src="/images/error2.png"/>
<br/>
<%
//exception 내장 객체
exception.printStackTrace(new PrintWriter(out));
%>
</body>
</html>
위 jsp 파일을 실행하면, String str = null이기 때문에 str.toString() 이 불가능 해 오류가 발생한다.
이 때,
<%@ page errorPage="page_errorPage_error.jsp" %> 로 인해 page_errorPage_error.jsp로 화면이 자동으로 이동한다.
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ page errorPage="page_errorPage_error.jsp" %>
<!DOCTYPE html>
<html>
<head>
<title>Directive Tag</title>
</head>
<body>
<% //스크립틀릿
//지역변수 선언
String str = null;
//오류 발생(null을 toString()할 수 없음
out.print(str.toString());
%>
</body>
</html>
2. include 디렉티브 태그
1) 현재 JSP페이지의 특정 영역에 외부 파일의 내용을 포함하는 태그
2) 현재 JSP페이지에 포함할 수 있는 외부 파일
- HTML, JSP, TEXT파일
3) include 디렉티브 태그는 JSP페이지 어디서든 선언 가능
4) 한 jsp파일 코드만 수정하면 모든 include 한 jsp 파일이 수정되기 때문에 재사용성이 좋다.

<%@ include file="include01_header.jsp" %>
<jsp:include page="include01_footer.jsp">
<jsp:param value="<%=memId %>" name="memId"/>
</jsp:include>
include 디렉티브 태그에서
<%@ include file="include01_header.jsp?파라미터명='value'" %> get 방식으로 값을 보낼 순 없다.
값을 보내려면 <jsp:param/> 태그를 사용해서 보내야 한다.
file="" 경로는 두 jsp파일이 같은 폴더 내 있을경우
1) file="jsp파일명"
2) file="/jsp파일명"
3) file="./jsp파일명"
세 가지 모두 사용할 수 있다.
include01_footer.jsp
<%@page import="java.net.URLDecoder"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%
request.setCharacterEncoding("utf-8");
String memId = request.getParameter("memId");
memId = URLDecoder.decode(memId);
%>
Copyright © <%=memId %>
memId 를 받아서 사용함
3. taglib 디렉티브 태그
1) 현재 jsp페이지에 표현 언어, jstl, 사용자 정의 태그 등 태그 라이브러리를 설정하는 태그
<%@ taglib prefix="접두사" uri="URI" %>
이런 형식으로 사용된다.
이 태그를 사용하려면 /WEB-INF/lib/ 폴더에 JSTL 태그 라이브러리인 JSTL-1.2.jar 파일을 추가해야한다.

| 태그 라이브러리 | 선언문 | 사용 |
| Core | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> | 변수 지정할 때 |
| XML | <%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %> | |
| I18N | <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> | 숫자 1000단위 구분기호, 앞에 $, \ , 날짜 형식 처리 할 때 사용 |
| Database | <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %> | |
| Functions | <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> | 문자추출 subString, split , 글자 크기 등...... |
쉽게 말해 라이브러리들을 web-inf에 넣지 않고 외부 주소로 편리하게 첨부해서 사용하기 위한 태그고,
스크립틀릿에서 사용하면 복잡한 코드들(if문,for문,switch문) 들을 한줄로 간편하게 작성할 수 있다.
<%
//java의 변수 jsp변수와 변수명이 같아도 다른 것임
String memId = "java변수";
%>
<!-- jstl의 변수 -->
<c:set var="memId" value="jstl변수" scope="page" />
<p>${memId}</p>
<p><%=memId %></p>
변수 명이 같아도 다른 변수로 인식한다!!
java 변수는 <%=변수명%> 으로 html 코드에서 사용하고,
jstl 변수는 ${변수명} 으로 사용한다!
<table border="1">
<tr>
<th>아이디</th>
<th>비밀번호</th>
<th>사용여부</th>
</tr>
<% //스크립틀릿
for(MemberVO memberVO : memberVOList){
out.print("<tr>");
out.print("<td>"+memberVO.getUsername()+"</td>");
out.print("<td>"+memberVO.getPassword()+"</td>");
out.print("<td>"+memberVO.getEnabled()+"</td>");
out.print("</tr>");
}
%>
</table>
스크립틀릿을 사용해 for문을 돌리면 이런 식으로 작성하게 되는데,
tablib를 사용하면
<table border="1">
<tr>
<th>아이디</th>
<th>비밀번호</th>
<th>사용여부</th>
</tr>
<!-- List<MemberVO> memberVOList -->
<c:forEach var="memberVO" items="${memberVOList}" varStatus="stat">
<tr>
<td>${memberVO.username}</td>
<td>${memberVO.password}</td>
<td>${memberVO.enabled}</td>
</tr>
</c:forEach>
</table>
이렇게 매우 간단하게 사용할 수 있다.
태그 라이브러리를 검색하려면 이클립스 ctrl + h를 누르고

Containing text에 검색할 값을, File name patterns에는 찾을 파일 형식(html, jsp) 등 을 넣고 검색하면

쉽게 찾을 수 있다!
'JSP' 카테고리의 다른 글
| [JSP] 파일 업로드 (0) | 2023.07.05 |
|---|---|
| [JSP] 폼(form) 태그 (0) | 2023.07.03 |
| [JSP] 내장 객체 (0) | 2023.06.29 |
| [JSP] 스크립트 태그 (0) | 2023.06.27 |
| [JSP] 액션 태그 (2) | 2023.06.27 |