web

태그 파일 기반의 커스텀태그

Clearing 2022. 8. 13. 22:03
728x90

태그 파일들은 Dynamic Web project의 WEB-INF의 tags 폴더에 저장, 관리하며 .tag 파일 기반의 커스텀 태그이다.

 

예를 들어 아래와 같은 형태의 print.tag 파일을 만들었을때

<%@ tag language="java" pageEncoding="UTF-8"%>

커스텀태그입니다. HELLO! :D

 

다음과 같이 커스텀 태그명을 지정해주고 해당 태그의 파일명을 불러와 사용 가능하다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib tagdir="/WEB-INF/tags" prefix="kim" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<h1><kim:print></kim:print></h1>
<h1><kim:print /></h1>

</body>
</html>

 

실행 결과

또 다른 예시로 다음과 같은 Test.java 클래스 파일을 만들었다.

package test; // 예시를 위해 만들었기 때문에 setter는 생략

import java.util.Arrays;

public class Test {
	private String[] datas = {"apple","banana","kiwi"};
	private int num1=10;
	private int num2=20;
	
	public String[] getDatas() {
		return datas;
	}

	public int getNum1() {
		return num1;
	}

	public int getNum2() {
		return num2;
	}
	
}

 

위 클래스를 사용하는 test.tag 태그 파일

<%@ tag language="java" pageEncoding="UTF-8"%>

<%@ attribute name="border" %>
<%@ attribute name="bgcolor" %>

<jsp:useBean id="test" class="test.Test" />
<h1><jsp:doBody /></h1>
<table border="${border}" bgcolor="${bgcolor}">
   <%
      for(String v:test.getDatas()){
   %>
      <tr>
         <td><%=v%></td>
      </tr>
   <%
      }
   %>
</table>

 

위 예시의 태그 파일처럼 attribute를 통해 태그에 속성을 줄 수 있으며 그에 따른 name 값을 줄 수 있다.

편의를 위해 속성과 이름을 일치시켰으며 사용자가 원하는 name 값을 지정할 수 있으며

jsp:doBody는 태그 바디에 작성하는 문구가 들어가게 된다.

 

커스텀 태그가 사용되는 .jsp 파일

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib tagdir="/WEB-INF/tags" prefix="kim" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>태그파일 기반의 커스텀태그</title>
</head>
<body>

<kim:test border="5" bgcolor="lightpink">과일 목록</kim:test>

</body>
</html>

 

실행결과

728x90

'web' 카테고리의 다른 글

JSP - JSTL  (0) 2022.08.16
태그핸들러클래스 기반의 커스텀태그  (0) 2022.08.14
커스텀 태그  (0) 2022.08.12
표현언어, EL식  (0) 2022.08.12
JSP - session 객체를 이용해 장바구니 만들기  (0) 2022.08.02