JSP(Java Server Pages)는 서버 사이드에서 동적 웹 콘텐츠를 만들기 위한 대표적인 기술 중 하나입니다. JSP 1.2에서 JSP 2.0 이상으로 넘어오면서 커스텀 태그 개발 방식에 많은 변화가 있었는데요, 이 글에서는 JSP 커스텀 태그의 발전 과정, **태그파일(tag file)**의 활용, JAR 파일 배포 방법, 그리고 MVC 패턴 적용까지 단계별로 정리해보겠습니다.
📌 1. JSP 1.2 → JSP 2.0 이상: 커스텀 태그의 변화
JSP 1.2에서는 커스텀 태그를 작성할 때 자바 클래스를 직접 만들어야 했습니다.
구분 | JSP 1.2 방식 | JSP 2.0 이상 방식 |
---|---|---|
내용 없는 태그 | TagSupport 상속 |
SimpleTagSupport 상속 |
내용 있는 태그 | BodyTagSupport 상속 |
SimpleTagSupport 상속 + getJspBody() |
메서드 구조 | doStartTag() , doEndTag() 등 |
doTag() 하나로 통합 |
출력 방식 | pageContext.getOut() |
getJspBody().invoke(null) |
✅ JSP 2.0 이상 장점: 구조가 단순화되고 코드 작성이 쉬워졌습니다.
❌ 단점: 여전히 작성해야 할 자바 파일이 많습니다.
📁 2. 태그파일(tag file) 방식으로 단순화
JSP 2.0부터는 태그파일(tag file) 방식이 도입되어, 복잡한 자바 클래스를 작성하지 않고 JSP와 유사한 문법으로 커스텀 태그를 만들 수 있습니다.
✔ 태그파일 특징
- 파일 확장자:
.tag
- 저장 위치:
/WEB-INF/tags/
- 태그 이름 = 파일 이름
예)date.tag
→<tagfile:date />
✔ 사용 방법
1) 태그파일 정의
/WEB-INF/tags/message.tag
<%@ tag language="java" %>
메시지 출력 태그입니다.
2) 사용하는 JSP
<%@ taglib prefix="tagfile" tagdir="/WEB-INF/tags" %>
<tagfile:message />
💡
.tag
파일은<%@tag %>
지시어로 시작하며, JSP처럼 작성 가능합니다.
⚙️ 3. 속성이 있는 커스텀 태그 작성
속성이 필요한 경우 <%@ attribute %>
지시어를 사용합니다.
<%@ tag language="java" %>
<%@ attribute name="count" required="true" type="int" %>
<c:forEach var="i" begin="1" end="${count}">
반복 중입니다 (${i}) <br/>
</c:forEach>
사용:
<tagfile:loop count="5" />
🧩 4. 태그파일을 TLD에 등록하여 사용할 수 있을까?
태그파일도 TLD(Tag Library Descriptor) 파일에 등록해 사용할 수 있습니다. 이렇게 하면 JSP에서 URI를 통해 불러올 수 있습니다.
📄 예시: tagFile.tld
<taglib>
<tlib-version>1.0</tlib-version>
<uri>http://mycompany.com/tags</uri>
<tag-file>
<name>loop</name>
<path>/WEB-INF/tags/loop.tag</path>
</tag-file>
</taglib>
JSP에서 사용:
<%@ taglib prefix="mytag" uri="http://mycompany.com/tags" %>
<mytag:loop count="3" />
📦 5. 커스텀 태그 JAR로 배포하기
커스텀 태그를 재사용하려면 JAR 파일로 패키징해 WEB-INF/lib
에 넣으면 됩니다.
🔧 JAR 구성 예시 (C:\temp 기준)
C:\temp
├── tagtest (패키지 내 .class 파일들)
├── META-INF
│ ├── tagFile.tld
│ └── tags
│ └── loop.tag
📤 JAR 만들기
cd C:\temp
jar cvf tagtest.jar *
생성된 tagtest.jar
파일을 WEB-INF/lib/
에 복사하면 끝!
🧭 6. MVC 패턴에서의 커스텀 태그 역할
JSP가 복잡해지면 MVC(Model-View-Controller) 패턴을 도입해 유지보수를 용이하게 합니다.
- Model: JavaBeans, 비즈니스 로직 클래스
- View: JSP (EL, JSTL, 커스텀태그 포함)
- Controller: Servlet, 명령어를 해석해 모델에 전달
예시:
요청 URL: /tag/message.do
→ 처리 클래스: ch18.controller.MessageProcess
→ 결과 View: /WEB-INF/views/message.jsp
커스텀 태그는 View 역할에서 코드 중복 제거와 표현 간소화를 위해 적극 활용됩니다.
📝 마무리
JSP 2.0 이상에서는 커스텀 태그 작성을 훨씬 더 간단하게 할 수 있습니다. 특히 tag file
방식은 코드 양을 줄이고 JSP 문법을 그대로 사용할 수 있어 매우 편리합니다. 나아가 태그들을 JAR 파일로 패키징하면 유지보수와 재사용성도 크게 향상됩니다. MVC 패턴과 함께 적용하면 대규모 웹 프로젝트에서도 높은 생산성과 가독성을 확보할 수 있습니다.
궁금한 점이나 예제 코드 요청이 있으시면 언제든지 댓글로 남겨주세요! 😊
ChatGPT, 블록체인, 자바, 맥북, 인터넷, 컴퓨터 정보를 공유합니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!