JSP & Servlet :: EL과 JSTL 개념정리
🔎 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"%>