Tiny Bunny [WEB] 커스텀 태그 - 솜님의 블로그
솜님의 블로그
카테고리
작성일
2024. 8. 25. 16:57
작성자
겨울솜사탕
🍀 View에서 Java의 작성을 막는 방식
1) 선언을 없애주는 EL
2) 제어문을 줄여주는 JSTL
3) 제어문을 제거하는 커스텀 태그

 

View에서 java의 작성을 막는 이유는?

뷰 페이지에 로직/기능/제어문이 들어가 있으면 디자이너들은 어려워할 수밖에 없음.

따라서 뷰 페이지의 가독성을 높이기 위해 java의 작성을 막는다.

 

커스텀이라는 의미대로 커스텀 태그는 내 마음대로 정의하여 사용하는 태그를 의미한다.

이러한 태그 페이지를 저장할 tag 폴더를 WEB-INF 하위에 만들어주고,

jsptag 파일을 생성한다.

 

.tag 파일을 생성하면 위와 같이 <%@ 태그 지시어 %> 가 자동으로 나온다.

 

 

▼ tag 사용 예제

 

hello.tag 파일 (제목)

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

<h1>커스텀태그에서 출력하는 메세지입니다! :D</h1>

만약 tag 파일을 여러곳에서 쓴다면?

태그 파일에 <h> 코드 사용하지 않고, 불러오는 파일에서 <h> 태그를 사용해 준다.

예제처럼 한 곳에서만 사용한다면 tag 파일에서 <h> 코드 사용한다.

 

table.tag 파일 (내용이 들어있는 tag파일)

<%@ tag language="java" pageEncoding="UTF-8"%>
<%@ attribute name="border" %> <!-- border 값을 받기 위해 페이지지시어 설정 -->
<%@ attribute name="bgcolor" %> <!-- border 값을 받기 위해 페이지지시어 설정 -->

<table border="${border}" bgcolor="${bgcolor}">
	<tr>
		<td><jsp:doBody></jsp:doBody></td>
		<td>태그 바디에 넣어준 값을 불러올 수 있음.</td>
	</tr>
	<tr>
		<td>20</td>
		<td>21</td>
	</tr>
	<tr>
		<td>30</td>
		<td>31</td>
	</tr>
</table>

<jsp:doBody></jsp:doBody> 태그는

태그 바디에 넣어준 값을 외부에서 불러와주는 역할을 한다.

 

 

NewFile.jsp 파일

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

	<mytag:hello/>
	<hr>
	<mytag:table border="1" bgcolor="lightblue">태그바디 영역</mytag:table>
	
</body>
</html>

이 jsp 파일에는 태그를 불러와서 사용해야 하므로, 상단에 지시어를 입력해 준다.

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

tagdir에는 "tag 파일이 있는 경로"를 작성해 주고, prefix는 "사용할 이름"을 작성해 준다.

 

위 예제에서 <mytag:table></mytag:table> 태그 사이에 넣어준 "태그바디 영역"은 

위 table.tag 파일에서 <jsp:doBody> 태그로 설정한 곳의 값이 들어가게 된다.

 

 

실제 사용 시에는

<mytag:  입력하면 내가 해당 경로에 작성한 tag 파일들이 확인이 된다.

 

경로로 설정한 tags 폴더에 만들어진 .tag 파일들

 

 

실행 결과

 

 

[오늘의 결론]

태그 파일을 사용하는 이유는?

모듈화, 컴포넌트화가 목적이다.

태그를 봤을 때 필요한게 무엇인지, 어떤 목적으로 만들어졌는지 디자이너가 알아볼 수 있도록 만들어 주는 것이 필요하다.

 

'WEB > ' 카테고리의 다른 글

[WEB] FrontController  (0) 2024.08.26
[WEB] xml 파일  (0) 2024.08.25
[WEB] JSTL  (0) 2024.08.25
[WEB] EL식  (0) 2024.08.22
[WEB] 에러 페이지  (0) 2024.08.22