jstljstl 시작하기


비고

JSTL (JSP 표준 태그 라이브러리)은 JSP 페이지 의 흐름제어하는 <c:xxx> 태그, 날짜 / 숫자 형식 및 국제화 기능을위한 <fmt:xxx> 태그 및 여러 ${fn:xxx()} 유틸리티 EL 함수 .

JSTL은 또한 SQL 쿼리를 실행하고 JSP 페이지 내에서 XML을 구문 분석하는 선언적 방식을 가능하게하는 SQLXML 태그 라이브러리를 제공합니다. 그러나 이것은 빠른 프로토 타이핑 보다는 다른 목적으로는 사용하지 않는 것이 좋습니다. 현실 세계에서 두 태스크는 서블릿에 의해 직접 제어되거나 위임되는 실제 Java 클래스에 의해 수행되어야합니다.

설치

JSTL은 Java EE API의 일부이며 WildFly , TomEE , GlassFish 와 같은 Java EE 응용 프로그램 서버에 포함되어 있지만 TomcatJetty 와 같은 베어 본 서블릿 컨테이너에는 포함되어 있지 않습니다. JSTL은 http://java.sun.com/jsp/jstl/* 네임 스페이스에서 가져 오는 taglib입니다. JSTL을 " 사용자 정의 JSP 태그 라이브러리 "(여기서 .tld 파일을 직접 정의)와 혼동해서는 안됩니다. JSTL은 JSF, Spring MVC, Struts, Displaytag 등과 같은 제 3 자 프레임 워크의 taglib과 혼동되어서는 안됩니다. JSTL은 EL (Expression Language) ( ${} 일)과 혼동되어서는 안됩니다.

  1. ServletContainer가 JSTL builtin (예 : Tomcat 및 Jetty)과 함께 제공되지 않는 경우 에만 jstl-1.2.jar 을 webapp의 /WEB-INF/lib 폴더 (기본 webapp의 classpath에 포함되어 있으므로 bit smart IDE) 당신은 다른 것을 할 필요가 없다. 우선, IDE 프로젝트의 Build Path 설정에서 주위를 둘러 보지 마십시오 . 이것은 틀렸어.

    당신은 메이븐을 사용하는 경우, 좌표를 수 있습니다 :

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>
     

    이것은 JSTL API가 단일 JAR 형식으로 Apache의 JSTL 구현에 번들되는 방식입니다. 이것은 standard.jar 필요로하지 않습니다 (JSTL 1.1에만 해당). jstl:jstl 종속성도 있지만 정확히 동일한 파일이며 잘못된 그룹 ID 만 있습니다. 또한 javax.servlet.jsp.jstl:jstl 종속성도 있지만 비어 있습니다.

  2. 올바른 TLD URI로 JSP 파일에서 taglib을 선언하십시오. JSTL 1.1과 JSTL 1.2 모두에 적용되는 TLD 문서는 여기 에서 찾을 수 있습니다. 관심있는 taglib을 클릭하여 선언 예제를 얻습니다. 예를 들어, JSTL core taglib

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

    JSP 대신 Facelets 또는 JSPX를 사용하는 경우 대신 XML 네임 스페이스로 선언해야합니다.

    <anyxmlelement xmlns:c="http://java.sun.com/jsp/jstl/core">
     

충돌을 피하기 위해 클래스 경로 (JDK / JRE의 /lib 및 서버의 /lib )에 이전 JSTL 버전의 중복이 없도록해야합니다. 서버에 대한 전체 관리자 수준의 제어 권한이있는 경우 webapp의 /WEB-INF/lib 대신 JAR 파일을 서버의 /lib 배치하여 배포 된 모든 웹 응용 프로그램에 적용되도록 할 수 있습니다. 최소한 JAR 파일을 추출하지 말고 클래스 패스에 내용 (깔끔한 TLD 파일)을 포함 시키거나 webapp의 web.xml taglibs를 선언하십시오. 가난한 온라인 자습서에서 제안합니다.