학부공부/웹시스템설계및개발

태그 파일의 variable 디렉티브와 name-given을 이용한 변수 추가

IT grow. 2018. 10. 13. 00:47
반응형

Variable 디렉티브와 name-given을 이용한 변수 추가


1.     Variable 디렉티브를 사용해서 태그 파일을 사용하는 JSP/태그 파일에서 사용할 EL변수 추가


2.     Variable 디렉티브의 기본 문법

 <%@ variable name-given=”EL변수이름” variable-class=”변수타입” scope=”변수범위”/>

# name-given : 이 태그를 호출한 페이지에 추가할 변수 이름을 정의

# variable-class : 추가될 변수의 타입을 지정 , 기본값 =  java.lang.String


# scope : 변수의 범위

è  AT_BEGIN : 태그 파일의 시작 태그 시점부터 태그 파일에 추가한 변수 사용

è  AT_END : 태그파일의 끝 태그 이후부터

è  NESTED : 태그파일의 시작 태그와 끝 태그 사이에서 사용

 

 

Name-given 속성 및 scope 속성에 따른 EL 변수 특징

태그 파일

<%@ variable name-given=”sum” scope=”NESTED” %>

 

태그를 호출하는 페이지

<%@ taglib prefix=”tf” tagdir=”/WEB-INF/tags” %>

<tf:some begin=”1” end=”10”>

합계 : ${sum} // 중요한 것은 여기서 scope 범위가 NESTED이기 때문에 sum을 사용할 수 있다는 것 

</tf:some>


예제를 통해서 이해해 보자 .

임의로 만들어준 sum.tag

<%@ tag pageEncoding="euc-kr" %> // Encoding 부분 
<%@ tag trimDirectiveWhitespaces="true" %>  // 공백처리 부분 
<%@ attribute name="begin" required="true" type="java.lang.Integer" %> // 속성 설정 
<%@ attribute name="end" required="true" type="java.lang.Integer" %>  // 속성 설정 
<%@ variable name-given="sum" variable-class="java.lang.Integer" scope="NESTED" %>  // 태그를 불러오는 페이지에서의 새로운 변수 추가  , 변수의 범위 설정 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>  // core 태그 
<c:set var="sum" value="${0}" /> // 새로운 변수의 초기값 설정 
<c:forEach var="num" begin="${begin}" end="${end}">  // begin 값과 , end 값을 가져와서 forEach 돌린다 .
<c:set var="sum" value="${sum + num}" />  // forEach 돌아가는 동안 새로운 변수에 num변수의 값을 더해준다 .
</c:forEach> 
<jsp:doBody /> // Body태그 그대로 출력 



tag 파일을 쓸 use_sum.jsp 


<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> 

<%@ taglib prefix="tf" tagdir="/WEB-INF/tags" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 

<html> 

<head> 

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR"> 

<title>Insert title here</title> 

</head> 

<body> 

<tf:sum begin="1" end="10">  // 태그파일을 사용함과 동시에 begin 값에 1을 , end 값에 10을 ,

1-10까지 합 : ${sum} 

</tf:sum> // 가공되어진 sum 출력  

</body> 

</html>


반응형