JSP

커스텀 태그로 페이지 구조 가독성 향상시키기

보배 진 2025. 12. 1. 09:33

 

 

 

 

 

추가적인 라이브러리 설치 없이 진행을 위해 4.0 버전 사용

web.xml은 존재하지 않음. 내부적으로 있음

 

 

 

Java Build Path 에 gson 등 설정

 

 

 

 

 

 

커스텀 태그 

 

GNB, LNB 처럼 안바뀌는 부분

페이지의 어떠한 부분이 한 덩어리로 존재하면 좋을 것 같을 때

다른 페이지에서도 재사용 될 때

하나의 태그 처럼 다루면 어떨까?

태그화, 모듈화, 컴포넌트 화, (과거에는 위젯)이라고 한다

 

 

 

 

 

NewFile.jsp 전체코드

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>커스텀 태그</title>
</head>
<body>
	안녕하세요! :D
	<hr>
	예제 표
	<table border="1" bgcolor="lightblue">
		<tr>
			<td>apple</td>
			<td>사과</td>
		</tr>
		<tr>
			<td>banana</td>
			<td>바나나</td>
		</tr>
	</table>
</body>
</html>

 

 

 

 

 

 

설정 폴더 WEB-INT에 tags 폴더를 추가했다

 

 

 

 

 

 

 

 

 

 

파일명은 hello

 

 

 

 

hello.tag 전체코드

<%@ tag language="java" pageEncoding="UTF-8"%>
<!-- tag : 태그 지시어 -->
안녕하세요! :D

 

 

 

 

 

 

NewFile.jsp 전체코드 중
안녕하세요(GNNB 부분) 부분 수정

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib tagdir="/WEB-INF/tags" prefix="teemo" %>
<!-- 태그 라이브러리 지시어 : 나 태그 디렉토리 tags에 있는데 temmo라고 부를게 
외부에 있는 자원을 가져올 때는 taglib가 필요하다-->

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>커스텀 태그</title>
</head>
<body>
	<teemo:hello/>	
	<hr>
	예제 표
	<table border="1" bgcolor="lightblue">
		<tr>
			<td>apple</td>
			<td>사과</td>
		</tr>
		<tr>
			<td>banana</td>
			<td>바나나</td>
		</tr>
	</table>
</body>
</html>

 


유지보수 용이를 위한 

 

태그 파일을 사용하면 결합도가 낮아진다

: 묘둘화, 태그화, 컴포넌트화를 했기 때문에

 

응집도가 높아진다 

: 관련코드들을 다 한곳에서 관리하기 때문

 

 


 

 

NewFile 안에 출력하는 테이블 부분도 여러 곳에서 마음에 들어 그 형식을 사용하고 싶을 때

 

 

print.tag 전체코드

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

<!-- 변수다~ 라고 알려주는 역할 -->
<%@ attribute name="border" %>
<%@ attribute name="bgcolor" %>

<h1><jsp:doBody/></h1>

<table border="${border}" bgcolor="${bgcolor}">
	<tr>
		<td>apple</td>
		<td>사과</td>
	</tr>
	<tr>
		<td>banana</td>
		<td>바나나</td>
	</tr>
</table>

 

 

 

jsp:doBody

외부에서 주는 값으로 (결정하는대로) 문장을 써주겠다

doBody : 태그 안에 있는 내용을 의미 ex)  예제코드

 

attribute name : 내부에서 변수화를 했다 

 

 

 

 

 

 

 

 

NewFile.jsp 수정된 전체코드

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib tagdir="/WEB-INF/tags" prefix="teemo" %>
<!-- 태그 라이브러리 지시어 : 나 태그 디렉토리 tags에 있는데 temmo라고 부를게 
외부에 있는 자원을 가져올 때는 taglib가 필요하다-->

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>커스텀 태그</title>
</head>
<body>
	<teemo:hello/>	
	<hr>
	<teemo:print border="10" bgcolor="lightpink">태그 바디</teemo:print>
</body>
</html>

 

값을 호출하는 쪽에서 준다.

보기 쉽고 코드가 간결해졌다