관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

표현 언어와 JSTL 5 - JSTL 시작하기 본문

웹 · 앱 개발/JSP & Servlet

표현 언어와 JSTL 5 - JSTL 시작하기

huenuri 2024. 11. 29. 18:50

드디어 JSTL에 대해서 공부할 수 있게 되었다. JSTL은 JSP Standard Tag Library의 약어로 JSP에서 사용 가능한 표준 태그 라이브러리이다. JSTL에서 제공하는 태그를 사용하면 JSP 코드가 깔끔하고 가독성이 좋게 된다.


 

 

 

 

 

JSTL

 

1. JSTL 라이브러리를 사용하는 이유

 

다음은 JSTL의 학습에 앞서 JSTL이 등장하게 된 배경을 설명하기 위한 예시이다. JSP에서 조건에 따라 서로 다른 HTML의 태그가 사용될 수 있도록 하기 위해서 스크립트릿에서 제어문을 사용한다.

 

 

 

HTML 코드와 스크립트릿을 함께 사용하게 되면 위의 예제처럼 코드가 복잡하고 가독성이 떨어진다. 이러한 문제점을 해결하기 위해 JSTL이 등장하게 되었다. JSTL은 다양한 태그를 제공함으로써 코드를 깔끔하게 하고 가독성을 좋게 한다.

 

 

위 문장은 파라미터로 넘겨진 color에 저장된 값이 1일 경우 빨간색으로 '빨강'이라고 출력하고 2일 경우 초록, 3일 경우 파랑으로 출력하는 예이다.


 

 

 

 

 

2. JSTL 라이브러리

JSP는 스크립트릿과 자바 코드 등 여러 코드들이 섞여서 복잡한 구조로 되어 있는데, 간결하고 이해하기 쉽게 코딩을 하기 위해 자신만의 태그를 추가할 수 있다. 이렇게 기본적으로 제공되는 것이 아닌 자신이 추가한 태그를 커스텀 태그라고 한다.

커스텀 태그는 JSP를 작성할 때 자주 사용되는 자바 코드를 웹에서 사용할 수 있는 태그 형태로 만드는 기술을 말한다. 작성한 커스텀 태그를 모아서 압축한 후 이를 배포해서 사용하는데 이를 커스텀 태그 라이브러리라고 한다. 라이브러리는 여러 프로그램이 공통으로 사용하는 코드를 모아놓은 코드의 집합을 말한다.

 

JSTL은 커스텀 태그들을 개별적으로만들어 쓰다 보니 일관성이 없어서 이를 표준화한 것으로 JSTL도 공통으로 사용되는 코드의 집합이다. 하지만 이 라이브러리는 우리가 보통 프로그래밍을 할 때 사용하는 라이브러리와 달리 JSP 페이지 안에서 사용할 수 있는 커스텀 태그를 제공한다.

JSTL에서 제공해주는 기능은 다음과 같다.

 

 

JSTL 라이브러리는 위 기능을 크게 core, format, xml, sql, functions 5가지 커스텀 태그로 나누어서 제공한다. JSTL을 제공해주는 사이트는 JSTL API로 주소는 다음과 같다.

 

JSTL API 제공 사이트

 

TLDDoc Generated Documentation

 

docs.oracle.com

 

책에 있는 주소는 바뀌었으므로 여기로 들어가야 찾을 수 있다.

 

 

 

 

 

5가지 커스텀 태그는 이름이 말해주듯, 기본 기능, 형식화, sql 처리, xml 처리, 함수 처리를 기능별로 나누어 제공한다.

 

 

JSTL 역시 커스텀 태그이기 때문에 이를 사용하기 위해서는 추가적으로 라이브러리가 필요하다. 자바 웹 애플리케이션에서는 추가적인 라이브러리가 jar 파일 형태로 제공되고 이를 WEB-INF/lib 폴러 내에 복사해 두고 사용한다.

커스텀 태그 라이브러리인 JSTL 역시 jar 파일을 압축하여 배포한다. JSTL을 사용하기 위해 필요한 JAR 파일은 다음과 같다.

jstl.jar
standard.jar

 

 

 

이 두 개의 파일을 구한 후에 JSTL을 설치해야 한다. 이 파일은 다음의 사이트에서 다운로드 받을 수 있다. 이 두 파일의 역할도 이 사이트에서 다음과 같이 설명하고 있다.

 

JSTL 파일 받는 사이트

 

The Jakarta Site - The Apache Jakarta™ Project -- Java Related Products

Founded in 1999, the Jakarta Project housed a diverse set of popular open source Java solutions. In 2005, as a part of creating a flatter Apache Software Foundation, Jakarta subprojects began to become full top-level Apache projects. This process has conti

jakarta.apache.org

 

 

 

 

JSTL을 사용하려면 톰캣을 사용하는 현재 이클립스 프로젝트의 WEB-INF/lib 폴더에 2개의 파일을 복사해야 한다.


 

 

 

 

 

[직접 해보기] JSTL 다운로드 받아 설치하기

 

1. JSTL 다운로드 받는 사이트에 들어가 항목 선택하기

사이트 왼쪽 메뉴 증 Taglibs 항목을 선택한다.

 

 

이 사이트가 2011년 기준으로 종료되었다고 해서 과연 신뢰할 수 있는 파일인지 의문이 들었다. 여러 자료를 찾아보면서 JSTL을 사용하는 방법에는 수동 설치뿐 아니라 코드를 추가하는 간단한 방법도 있다는 것도 알게 되었다. 하지만 이 방법은 약간의 공부가 필요해서 난 수동 설치를 하기로 했다.


 

 

 

 

 

2. Apache Standard Taglib 클릭하기

 

 

 

 

3. JSTL 1.2 버전 다운받기

가장 최신 버전으로 다운로드를 누른다.

 

 

 

 

 

 

이 화면이 나타나는데 여기서 jar Files에 있는 앞의 두 개의 파일을 받는다. 책에는 압축 파일을 받으라고 되어 있었지만, 하위 버전이라 난 상위 버전을 선택했다.


 

 

 

4. 압축 파일을 WEB-INF/lib 폴더에 복사하기

압축은 풀지 않고 그대로 복사하여 붙여 넣는다. Java는 JAR 파일을 직접 읽고 사용할 수 있도록 설계되었기에 JAR 파일 내부의 클래스와 리소스를 Java 클래스 로더가 알아서 처리한다. 오히려 압축을 풀어 복사하면 Java 애플리케이션이 JAR 파일로 인식하지 못하고 실행 오류가 발생할 수 있다.

 

 

 

 

 

이 압축 파일을 하나씩 파일 안에 붙여 넣는다.

 

 

 

 

그러면 이런 창이 뜨는데 OK 누르면 된다.

 

 

 

 

붙여 넣으니 이렇게 병 모양의 아이콘이 생겼다.


 

 

 

 

태그 라이브러리를 사용하려면 JSP 페이지에 taglib 지시자를 추가하여 URL 식별자와 접두사를 연결해야 한다. 다음은 JSTL이 제공해주는 기능 중 기본 기능인 core를 사용하기 위한 taglib 지시자이다. tablib 지시자는 <%@로 시작해서 %>로 끝나며 uri와 prefix 속성을 사용하여 URL 식별자와 접두사를 지정한다.

 

 

uri 속성 값은 JSTL이 제공해주는 여러 종류의 태그 라이브러리 중 http://java.sun.com/jsp/jstl/core를 사용하기 위한 식별자 역할을 한다.

 

 

prefix 속성 값인 c는 태그에서 사용할 접두사이다.

 

 

 

 

<c:out>은 데이터를 출력할 때 사용하는 태그로 표현식인 <%= %>를 대체할 수 있다. 다음은 JSTL의 기능 분류에 따른 태그 라이브러리의 URL 식별자와 접두사인 prefix를 정리한 표이다.

 

이중 http://java.sun.com/jsp/jstl/core에서 제공해주는 <c:out> 태그를 사용하여 JSTL이 제대로 설치되었는지 확인해 보도록 하겠다.


 

 

 

 

[직접 해보기] <c:out> 태그로 간단한 메시지를 출력하는 JSP 페이지

 

 

 

 

 

하지만 이런 오류가 떴다. 지금은 해결하기 힘들고 조금 쉬었다가 이 문제를 고민해보려고 한다. 시간이 좀 많이 걸릴 것 같다.


 

 

 

 

학습을 마치고

오늘 오후에 반나절만에 JSTL 공부를 다 마치고 자바를 공부하려던 계획은 정말 무리한 계획이었음을 알게 되었다. JSTL도 공부할 게 많았고 처음 하다보니 많이 버벅거리고 해매는 중이다.

아마 오늘 JSTL 파일을 추가하여 제대로 작동하게만 해도 큰 성공이다. 내가 하는 이 공부 정말 쉽지 않은 공부이다. 그래도 매일 꾸준히 공부를 쉬지 않고 한다는 것이 대단한 일이다. 

 

나 자신에게 자부심을 느끼며 오늘도 수고했다고 말하고 싶다. 어떤 날은 많이 하기도 적게 하기도 하지만 중요한 것은 매일 꾸준히 하는 것이다.