📚 Study/JSP & Servlet

JSP & Servlet :: EL과 JSTL 개념정리

bono-hye 2023. 12. 21. 23:15

🔎 EL(Expression Language : 표현 언어)

EL은 JSTL 1.0 스펙에서 잠깐 소개되었다가 JSP 2.0  부터 공식적으로 포함되었으며

JSP 페이지에 사용되는 자바 코드를 대신해서 액션 태그 엘리먼트의 속성에 값을 지정하는 역할을 한다.

 

예를 들어,

<someTags:aTag> 액션 태그의

엘리먼트의 속성은 attribute 이고 속성 값은 <% pageContent:getAttribute(aName")%>인 경우

<someTags:aTag attribute="<% pageContent.getAttribute('aName')%>"> 의 방식으로 표현해야 하지만

표현 언어(EL)에서는

<someTags:aTag attribute="${aName}"> 이렇게 표현한다.

 


🔎 JSTL(JSP Standarad Tag Library)

JSP 에서는 XML 처럼 사용자가 태그를 정의해서 사용하는 것이 가능하며

이와 같은 사용자 정의 태그를 커스텀 태그라고 하는데 이들 중 자주 사용하는 것을 표준으로 만들어 놓은 것이 JSTL이다.

 

JSTL 은 일반적인 웹 어플리케이션 기능인

반복과 조건, 데이터 관리, 포맷, XML 조작, 데이터베이스 액세스

구현하는 커스텀 태그 라이브러리 모음이다.

 

JSP의 스크립트와 HTML 코드를 혼용하여 사용하면

개발의 편의성👍을 제공하긴 하지만 코드의 복잡성을 증대😢시키는 문제가 있다.

이와 같은 문제를 해결하기 위해 로직 부분의 JSP 코드를 태그로 대치시켜 HTML 과 같은 태그로 이루어진 코딩 방법이 제시되었다.

 

JSTL 은 JSP 로직을 담당하는 부분인 if, for, while, DB처리 등과 관련된 표준 커스텀 태그를 제공함으로써

코드를 간결하고 가독성이 좋도록 👍 하며

데이터 포맷, 반복 콘텐트 또는 조건 콘텐트와 같은 전형적이 표현 레이어를 위한 표준 구현을 제공하기 때문에

JSP 작성자들이 어플리케이션 개발에 집중하는데 도움이 된다.👍

 

JSP(JSTL) 작성 시 주의할 사항은 액션 태그도 그렇지만 JSTL 커스텀 태그도 XML 기반에서 작성되었기 때문에
모든 태그는 시작 태그와 종료 태그의 쌍으로 이루어져야 한다는 것이다.

기존의 컨텍스트에서 JSTL 을 사용하기 위해서는 웹 어플리케이션의 WEB-INF/lib 디렉터리에 필요한 라이브러리를 복사하여 붙여넣으면 된다.
JSTL 의 주된 라이브러리 파일은 jstl.jar, standard.jar 파일이고, jaxen-full.jar, sxpath.jar, jaxp-api.jar 파일 등이 필요하다.
이 파일들을 적재하고 컨텍스트를 리로드한다.

더보기

- JSTL 을 사용하기 위한 환경 설정
    
     ·『https://jakarta.apache.org/

     ·왼편에 구성된 메뉴 목록들 중 『Taglibs』 클릭
       → 『https://tomcat.apache.org/taglibs/』 페이지로 이동

     ·왼편에 구성된 메뉴 목록들 중 『Standard』 클릭
       → 『https://tomcat.apache.org/taglibs/standard/』 페이지로 이동

     ·본문의 내용 중 『Standard 1.1』 항목의 『download』 클릭
       → 『https://archive.apache.org/dist/jakarta/taglibs/standard/』 페이지로 이동
     
     ·본문의 내용 중 『binaries/』클릭
       → 『https://archive.apache.org/dist/jakarta/taglibs/standard/binaries/』 페이지로 이동

     ·본문의 목록 중 『jakarta-taglibs-standard-1.1.2.zip 2004-10-25 20:57  933K』 클릭
       → 다운로드 대화창 → 파일 다운로드 및 저장
       → 다운로드 완료 및 압축 해제

     이후... (압축 해제 후)...
     『C:\Downloads\12_JSTL\jakarta-taglibs-standard-1.1.2\jakarta-taglibs-standard-1.1.2\lib』 디렉터리 안에 있는
     『jstl.jar』 파일과 『standard.jar』 파일
     이렇게 두 개의 jar 파일을
     현재 작업할(작업중인) 프로젝트의 『WebContent > WEB-INF > lib』 경로에
     복사하여 붙여넣기 한다.

     다음으로...
     이클립스 환경 설정(Window > Preferences) 클릭
     → Web 항목 > JSP Files > Editor > Templates 접근

     리스트 항목들 중 (체크 박스는 건드리지 말고...)
     new JSP File(html 5) 항목 선택 후 수정(Edit 버튼 클릭)

     이어 열리는 대화창에서
     최초 디렉티브(page) 아래에 다음과 같은 내용 추가

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

✔ JSTL 사용

JSTL 은 태생이 커스텀 태그이기 때문에 JSP 와 밀접한 관계가 있다.
application, session, request, response, pageContext 등의 내장 객체에 쉽게 접근하며,

그 외에도 파라미터, 쿠키, 헤더 등을 복잡한 코드를 사용하지 않고 쉽게 직관적으로 사용할 수 있다.
또한, 기본적인 연산이나 객체 비교 등을

『.equals()』 메소드 등을 사용하는 대신 『==』와 같이 쉽게 구현하였으며,
조건, 반복, 이동에 따른 태그를 지원하기 때문에 태그만으로도 반복 기능을 구현할 수 있다.
JSTL 의 처리 영역은 크게 4 가지로 나누어진다

core 기본핵심기능
format 형식화
xml xml 처리
sql sql 처리

 

✔ 주요 분류 및 종류

   ○ Core
      - 기능 : 변수지원, 흐름제어, URL처리 등
      - 접두어(Prefix) : c
      - URI : http://java.sun.com/jsp/jstl/core

   ○ XML
      - 기능 : XML코어, 흐름제어, XML변환 등
      - 접두어(Prefix) : x
      - URI : http://java.sum.com/jsp/jstl/xml

   ○ 국제화(형식화)
      - 기능 : 지역, 메세지형식, 숫자및날짜형식 등
      - 접두어(Prefix) : fmt
      - URI : http://java.sum.com/jsp/jstl/fmt

   ○ 데이터베이스
      - 기능 : SQL 지원
      - 접두어(Prefix) : sql
      - URI : http://java.sum.com/jsp/jstl/sql

   ○ Functions
      - 기능 : 컬렉션처리, String처리 등
      - 접두어(Prefix) : fn
      - URI : http://java.sum.com/jsp/jstl/functions

 

   ※ JSTL 에 taglib 추가
   <%@ 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"%>