본문 바로가기

JSP

[JSP] 디렉티브 태그(Directive Tag) - 지시자 태그

디렉티브 태그는 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 &copy; <%=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