[WebStudy] Concept

14 [EL과 JSTL]

Jelly-fish 2023. 12. 28. 08:48

■■■ EL(Expression Language)과 JSTL(JSP Standard Tag Library) ■■■


○ 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 Standard Tag Library)

   JSP  에서는 XML 처럼 사용자가 태그를 정의해서 사용하는 것이 가능하며
   이와 같은 사용자 정의 태그를 커스텀 태그라고 하는데
   이들 중 자주 사용하는 것을 표준으로 만들어 놓은 것이 JSTL 이다.

   JSP Standard Tag Library(JSTL)는 일반적인 웹 어플리케이션 기능인
   반복(iteration)과 조건, 데이터 관리, 포맷, 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\lib』 디렉터리 안에 있는
    『jstl.jar』 파일과 『standard.jar』 파일
    이렇게 두 개의 jar 파일을
    현재 작업할(작업중인) 프로젝트의 『WebContent > WEB-INF > lib』 경로에
    복사하여 붙여넣기 한다.

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

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

    이어 열리는 대화창에서
    최초 디렉티브(page) 아래에 다음과 같은 내용 추가
    
    『<%@ taglib prefix="c" url="http://java.sun.com/jsp/jstl/core"%>』


    - JSTL 사용

      JSTL 은 태생이 커스텀 태그이기 때문에 JSP 와 밀접한 관계가 있다.
      application, session, request, response, pageContext 등의
      내장 객체에 쉽게 접근하며, 그 외에도 파라미터, 쿠키, 헤더 등을
      복잡한 코드를 사용하지 않고 쉽게 직관적으로 사용할 수 있다.
      또한, 기본적인 연산이나 객체 비교 등을 『.equals()』 메소드 등을
      사용하는 대신 『==』 와 같이 쉽게 구현하였으며,
      조건, 반복, 이동에 따른 태그를 지원하기 때문에
      태그만으로도 반복 기능을 구현할 수 있다.


      JSTL 의 처리 영역은 크게 4가지로 나누어진다.
      core           format    xml       sql 
      (기본핵심기능) (형식화) (xml처리) (sql처리)


※ 주요 분류 및 종류

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

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

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

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

   ○ Functions
      - 기능 : 컬렉션 처리, String처리 등
      - 접두어(Prefix) : fn
      - URI : http://java.sun.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/function"%>


===========================================================================
<%= 표현식%>

    ↓

${표현언어}     $(선택자) J-Query의 선택자...

태그 사이에 스크립트릿으로 조건, 반복을 구성하는 것은 바람직하지 않다.

<%
if (조건)
{
%>
........
........
........
<%
}
%>

이렇게 작성하지말고, 태그로 한다면 가독성이 올라갈 것이다.
필요한 태그를 만들어서 쓰는것 : 커스텀 태그

태그를 하나씩 일일이 만들지 않고, 라이브러리에 저장해놓고 꺼내서 쓴다면
굉장히 편리할 것이다~

이것은 스탠다드한 라이브러리로 만들어 두자 → 그것이 JSTL!!

===========================================================================