BACKEND [Kamranahmedse Roadmap]/JSP - Servlet

JSTL(JavaServer Pages Standard Tag Library)란?

Alex Han 2025. 3. 4. 21:10
반응형

JSTL(JavaServer Pages Standard Tag Library)은 JSP에서 자주 사용되는 기능을 표준 태그 형식으로 제공하는 라이브러리이다.

기존에는 스크립틀릿(<% ... %>)을 사용해서 Java 코드를 JSP에 직접 삽입했지만, JSTL을 사용하면 코드를 더 간결하고 가독성 좋게 작성할 수 있다.

 

JSP란 무엇인가

 

JSP란 무엇인가?

JSP (JavaServer Pages)는 자바 기반의 서버 사이드 스크립트 언어로, 동적인 웹 페이지를 생성하기 위해 사용된다. HTML 코드 내에 Java 코드를 포함할 수 있으며, 주로 Java Servlet과 함께 사용된다. Servlet

jyhan0625.tistory.com

 

 

 


JSTL의 주요 기능

JSTL은 크게 5가지 기능을 제공하는 태그 라이브러리로 구성된다.

 

1) 코어(Core) 태그 (c:)

가장 많이 사용되는 태그로, 변수 설정, 조건문, 반복문 등의 기능을 제공한다.

태그 설명
<c:set> 변수를 설정 (setAttribute와 유사)
<c:remove> 변수를 제거
<c:if> 조건문 (if문과 유사)
<c:choose>, <c:when>, <c:otherwise> 다중 조건문 (switch-case와 유사)
<c:forEach> 반복문 (for문과 유사)
<c:forTokens> 문자열을 특정 구분자로 분리하여 반복
<c:catch> 예외 처리
<c:import> 다른 페이지 포함 (include와 유사)
<c:url> URL을 동적으로 생성
<c:redirect> 페이지 이동

 

예제: c:set, c:if, c:forEach

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

<c:set var="count" value="5" />
<c:if test="${count > 0}">
    <p>Count는 0보다 큽니다.</p>
</c:if>

<ul>
    <c:forEach var="num" begin="1" end="${count}">
        <li>번호: ${num}</li>
    </c:forEach>
</ul>

 


 

2) 포맷(Formatting) 태그 (fmt:)

숫자, 날짜, 통화 등을 포맷팅하는 기능을 제공한다.

태그 설명
<fmt:formatNumber> 숫자 포맷 설정
<fmt:parseNumber> 문자열을 숫자로 변환
<fmt:formatDate> 날짜 포맷 설정
<fmt:parseDate> 문자열을 날짜로 변환
<fmt:setLocale> 지역(Locale) 설정
<fmt:bundle> 다국어 지원을 위한 리소스 번들 로드
<fmt:message> 다국어 지원 메시지 출력

 

예제: 날짜 및 숫자 포맷

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

<fmt:setLocale value="ko_KR" />

<fmt:formatNumber value="1234567.89" type="currency" />
<!-- 결과: ₩1,234,567.89 -->

<fmt:formatDate value="<%= new java.util.Date() %>" pattern="yyyy-MM-dd HH:mm:ss" />
<!-- 결과: 2025-02-20 15:30:00 -->

 


 

3) SQL 태그 (sql:)

JSP에서 직접 JDBC 연동을 쉽게 할 수 있도록 도와준다.

실무에서는 보안 문제 때문에 잘 사용하지 않는다.

태그 설명
sql:setDataSource> 데이터베이스 연결 설정
<sql:query> SELECT 문 실행
<sql:update> INSERT, UPDATE, DELETE 문 실행
<sql:param> SQL 파라미터 설정

 

예제: 데이터 조회

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

<sql:setDataSource var="ds" driver="com.mysql.cj.jdbc.Driver"
    url="jdbc:mysql://localhost:3306/mydb" user="root" password="1234"/>

<sql:query dataSource="${ds}" var="result">
    SELECT * FROM users;
</sql:query>

<ul>
    <c:forEach var="row" items="${result.rows}">
        <li>${row.id} - ${row.name}</li>
    </c:forEach>
</ul>

 


 

4) XML 태그 (x:)

XML 데이터를 처리할 때 사용한다.

태그 설명
<x:parse> XML을 파싱
<x:out> XML 데이터 출력
<x:set> XML 데이터를 설정
<x:choose>, <x:when>, <x:otherwise> XML 조건문

 

예제: XML 데이터 처리

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

<x:parse var="doc">
    <books>
        <book>
            <title>JSP Programming</title>
            <author>John Doe</author>
        </book>
    </books>
</x:parse>

<x:out select="$doc/books/book/title" />
<!-- 결과: JSP Programming -->

 


 

5) 함수(Function) 태그 (fn:)

JSP에서 문자열 조작, 리스트 처리 등의 기능을 제공한다.

함수 설명
fn:length 문자열 또는 리스트의 길이 반환
fn:contains 특정 문자열 포함 여부 확인
fn:toUpperCase, fn:toLowerCase 대소문자 변환
fn:trim 문자열 앞뒤 공백 제거
fn:substring 문자열 자르기
fn:split 특정 구분자로 문자열 나누기
fn:join 리스트를 하나의 문자열로 합치기

 

예제: 문자열 처리

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

<c:set var="text" value="  Hello JSTL  " />

<p>길이: ${fn:length(text)}</p>
<p>대문자로 변환: ${fn:toUpperCase(text)}</p>
<p>공백 제거: ${fn:trim(text)}</p>
<p>부분 문자열: ${fn:substring(text, 2, 7)}</p>

 

 

 


JSTL을 사용하는 이유

 

1. JSP 코드 간소화

<% ... %> 대신 태그를 사용하여 코드가 깔끔해진다.

2. 유지보수 용이

HTML과 Java 로직이 분리되어 유지보수가 쉬워진다.

3. 가독성 향상

조건문, 반복문을 태그 형태로 표현하여 가독성이 좋아진다.

4. 보안 강화

SQL 태그 등에서 JSTL이 자동으로 SQL Injection 방지 기능을 제공한다.

 

 

 


결론

JSTL은 JSP에서 반복문, 조건문, 데이터 포맷팅, XML 처리, 문자열 조작 등의 기능을 제공하는 표준 태그 라이브러리이다.

이를 사용하면 JSP 코드가 간결하고 가독성이 좋아지며, 유지보수가 쉬워진다.

반응형