[JSP] 15. JSTL(JSP Standard Tag Library) #1 JSTL이란 무엇인가?

2022. 6. 29. 10:57JAVA/Servlet&JSP

1. JSTL이란 무엇인가?

JSTL는 자바 EE 웹 애플리케이션 개발 플랫폼의 구성요소입니다. XML 데이터 처리, 조건문 실행, 데이터베이스 접근, 반복문과 같은 일반적인 작업을 위한 JSP 태그의 태그 라이브러리를 추가하여 JSP 규격을 확장한 것입니다. 즉, JSTL는 JSP 페이지에서 일반적으로 많이 쓰이는 자바 언어 로직들을 태그 라이브러리화 한것입니다.

 

왜 JSTL를 사용해야 하는가?

JSP는 스크립트릿( <% %> )과 표현식 등의 스크립트 코드와 HTML 코드가 뒤섞이게 되는데 이렇게 뒤썩인 JSP 코드는 알아보기 힘든 경우가 있습니다. 예를 들어 if문이나 for문을 사용할 경우에 다음과 같은 형태가 됩니다.

<%
for(int i = 0; i < list.size(); i++){
	if(list.get(i).getDept().equals("인사부")){
%>
		<p><%= list.get(i).getName() %></p>
<%
    }
}
%>

위 코드는 직원의 정보를 담은 리스트를 순회하며 해당 직원의 부서가 인사부인 사람의 이름을 출력하는 코드입니다. 위와 같은 코드의 문제점은 for문과 if문, p 태그가 뒤섞여 있기 때문에 한번에 알아보기도 힘들 뿐만 아니라 괄호를 맞추는 것에도 힘이 들고 추후 확장을 해야 하는 경우에도 수정하는데 많은 노력을 들여야 합니다.

 

JSP는 실행 코드와 화면을 구성하는 HTML 코드를 쉽게 섞을 수 있게 함으로써 개발의 편리성을 제공하지만, 반대로 스크립트 코드와 HTML 코드가 뒤섞이게 됨으로써 코드의 복잡성을 증가시키는 문제를 낳게 되었습니다.

 

위와 같은 문제를 해결하기 위해서 JSTL과 EL 표현 언어를 사용하면 위와 같은 코드를 다음과 같이 표현할 수 있습니다.

<c:forEach var="employee" items="${employees}">
    <c:if test="${employee.dept eq '인사부'}">
        <p>${employee.name}</p>
    </c:if>
</c:forEach>

 

위와 같이 HTML 태그와 비슷하게 태그를 사용할 수 있다면, 스크립트 코드를 사용할 때 보다 훨씬 보기 좋고 이해하기 쉬운 코드를 작성할 수 있을 것입니다.

 

1.1 JSTL이 제공하는 태그의 종류

라이브러리 하위 기능 접두어 관련 URL
코어 변수지원
흐름 제어
URL 처리
c http://java.sun.com/jstl/core
XML XML 코어
흐름 제어
XML 변환
x http://java.sun.com/jsp/jstl/xml
국제화 지역
메시지 형식
숫자 및 날짜 형식
fmt http://java.sun.com/jsp/jstl/fmt
데이터베이스 SQL sql http://java.sun.com/jsp/jstl/sql
함수 컬렉션 처리
String 처리
fn http://java.sun.com/jsp/jstl/functions

 

1.2 JSTL을 사용하기 위한 환경 조성

태그 라이브러리를 사용하기 위해서 JSP 페이지 상단에 다음과 같이 정의합니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
    <%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
    <%@taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
    <%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

</body>
</html>

 

References

source code : https://github.com/yonghwankim-dev/JSP2.0
JSP 2.0 프로그래밍 기초부터 중급까지