🍀 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 |