Basic

JSP 레거시 프로젝트에 JSTL 적용하기 (완벽 가이드)

Albosa2lol 2025. 3. 11. 16:27

JSP 레거시 프로젝트에 JSTL 적용하기 (완벽 가이드)


🏆 JSP + JSTL: 레거시 프로젝트 개선 전략

기존에 JSP(JavaServer Pages)로 작성된 레거시 프로젝트가 있다면, JSTL(JavaServer Pages Standard Tag Library)을 도입하면 다음과 같은 장점이 있습니다:

✅ JSP 코드 간소화 → HTML에 가까운 코드 작성 가능

✅ Java 로직 분리 → MVC 패턴에 부합

✅ 가독성 및 유지보수성 강화

✅ 반복문, 조건문 등을 태그 기반으로 처리 → 코드 직관성 향상


🌟 JSP + JSTL 개요

JSP(JavaServer Pages)란?

  • Java EE(Enterprise Edition) 기반의 서버 사이드 렌더링 기술
  • HTML에 Java 코드를 삽입 가능
  • 서블릿(Servlet)으로 변환 후 실행

JSTL(JavaServer Pages Standard Tag Library)이란?

  • JSP에서 자주 사용하는 작업(조건문, 반복문 등)을 태그로 간편하게 처리
  • Java 코드를 직접 작성하지 않고 태그를 통해 제어 가능
  • JSP의 유지 보수성과 생산성을 강화

💡 JSP → JSTL 적용 후 개선 효과

항목 JSP (순수) JSP + JSTL

코드 가독성 낮음 높음
유지보수성 어렵다 쉽다
MVC 패턴 적용 어렵다 용이
반복문/조건문 Java 코드로 작성 JSTL 태그로 간단히 작성
HTML과 Java 코드의 분리 복잡 명확하게 구분됨
코드 재사용성 낮음 높음

🏗️ JSTL 적용 예제

1. 반복문 처리

🚫 기존 JSP 코드:

<%
for (String item : items) {
%>
    <li><%= item %></li>
<%
}
%>

✅ JSTL 적용 코드:

<c:forEach var="item" items="${items}">
    <li>${item}</li>
</c:forEach>


2. 조건문 처리

🚫 기존 JSP 코드:

<%
if (status.equals("active")) {
%>
    <p>상태: 활성</p>
<%
} else {
%>
    <p>상태: 비활성</p>
<%
}
%>

✅ JSTL 적용 코드:

<c:choose>
    <c:when test="${status == 'active'}">
        <p>상태: 활성</p>
    </c:when>
    <c:otherwise>
        <p>상태: 비활성</p>
    </c:otherwise>
</c:choose>


3. 값 설정

🚫 기존 JSP 코드:

<%
String name = "John";
request.setAttribute("name", name);
%>

✅ JSTL 적용 코드:

<c:set var="name" value="John" />


4. URL 링크 생성

🚫 기존 JSP 코드:

<a href="<%= request.getContextPath() %>/home">홈으로</a>

✅ JSTL 적용 코드:

<a href="<c:url value='/home' />">홈으로</a>


5. 다중 조건문 처리

🚫 기존 JSP 코드:

<%
if (user != null) {
%>
    <p>환영합니다, <%= user.getName() %>!</p>
<%
}
%>

✅ JSTL 적용 코드:

<c:if test="${not empty user}">
    <p>환영합니다, ${user.name}!</p>
</c:if>


🏆 JSTL 주요 태그 및 기능

태그 설명 예제

<c:if> 조건문 처리 <c:if test="${condition}">...</c:if>
<c:choose> 다중 조건 처리 <c:choose><c:when>...</c:when><c:otherwise>...</c:otherwise></c:choose>
<c:forEach> 반복문 처리 <c:forEach var="item" items="${items}">...</c:forEach>
<c:set> 변수 설정 <c:set var="name" value="John" />
<c:url> URL 처리 <c:url value="/home" />
<c:out> 출력 처리 <c:out value="${name}" />

🛠️ JSTL 적용 설정 방법

1. JSTL 의존성 추가 (Maven 기준)

pom.xml에 JSTL 의존성 추가:

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>


2. JSP 상단에 JSTL 선언 추가

JSP 파일 상단에 JSTL 태그 라이브러리 선언:

<%@ taglib prefix="c" uri="<http://java.sun.com/jsp/jstl/core>" %>


3. JSP에서 JSTL 태그 사용

  • <c:if>, <c:forEach>, <c:set>, <c:choose> 등을 사용해 Java 코드 제거 가능

🌟 JSP + JSTL 사용 시 장점

HTML 코드와 Java 코드 분리 → 가독성 향상

MVC 패턴에서 View 역할 강화

Java 코드 최소화 → 유지 보수성 강화

코드 재사용성 강화

반복문, 조건문 등 간결한 코드 작성 가능


⚠️ JSP + JSTL의 한계

❌ JSP는 서블릿 변환 과정에서 성능이 다소 저하될 수 있음

❌ JSP는 최근 프로젝트에서는 잘 사용되지 않음 → Thymeleaf가 대세

❌ JSTL은 JSP 전용 → JSP 외 기술에서는 사용 불가


🚀 결론: JSP 레거시 프로젝트에는 JSTL 도입이 필수

✅ 기존 레거시 프로젝트에서 복잡한 JSP 코드를 개선할 때는 JSTL을 적극 도입하자!

✅ 코드를 간결하게 만들고 유지 보수를 쉽게 하려면 JSTL이 필수

✅ 새로운 프로젝트에서는 JSP 대신 Thymeleaf 권장


👉 기존 JSP 프로젝트에서 JSTL 적용하면 다음과 같은 효과를 볼 수 있습니다:

✔️ 유지 보수성 강화

✔️ 코드 재사용성 증가

✔️ 코드 가독성 향상

✔️ MVC 패턴 강화

➡️ 레거시 프로젝트에서도 충분히 개선 가능! 😎🔥