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 패턴 강화

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