jstlIniziare con jstl


Osservazioni

JSTL (JSP Standard Tag Library) è una libreria di tag standard basata su JSP che offre tag <c:xxx> per controllare il flusso nella pagina JSP, <fmt:xxx> per la formattazione di data / numeri e servizi di internazionalizzazione e diversi ${fn:xxx()} funzioni EL utility .

Si noti che JSTL offre anche tagli di SQL e XML che consentono un modo dichiarativo di eseguire query SQL e analizzare l'XML all'interno di una pagina JSP. Questo è tuttavia scoraggiato per altri scopi rispetto alla prototipazione rapida . Nel mondo reale entrambe le attività devono essere eseguite da classi Java reali che sono (in) direttamente controllate / delegate da un Servlet .

Installazione

JSTL fa parte dell'API Java EE e viene incluso nei server di applicazioni Java EE come WildFly , TomEE , GlassFish , ma non nei portlet servlet barebone come Tomcat e Jetty . JSTL sono i tagli che vengono importati dallo spazio dei nomi http://java.sun.com/jsp/jstl/* . JSTL non deve essere confuso con un " libreria di tag JSP personalizzati " (in cui si definisce una .tld file manualmente). JSTL non deve inoltre essere confuso con tagli di strutture di terze parti come JSF, Spring MVC, Struts, Displaytag, eccetera. JSTL non deve inoltre essere confuso con Expression Language (EL) (che sono quelle ${} cose).

  1. Solo quando il tuo servlettaintainer non viene fornito con JSTL incorporato (ad esempio Tomcat e Jetty), quindi basta rilasciare il file jstl-1.2.jar direttamente nella cartella webapp /WEB-INF/lib (che è coperta dal classpath di default dell'applicazione webapp, quindi in un bit smart IDE non è necessario fare altro). Per i principianti, non gironzolare nell'impostazione del percorso di costruzione del progetto IDE. Questo è sbagliato.

    Nel caso tu stia utilizzando Maven, questa è la coordinata:

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

    Questo è il modo in cui l'API JSTL è in bundle con l'implementazione JSTL di Apache in un singolo aroma JAR. Questo non richiede il file standard.jar (è solo per JSTL 1.1). Nota che esiste anche una dipendenza jstl:jstl , ma è esattamente lo stesso file, solo con un ID di gruppo errato. Inoltre c'è anche un javax.servlet.jsp.jstl:jstl dipendenza javax.servlet.jsp.jstl:jstl , ma è vuoto.

  2. Dichiarare il taglib nel file JSP con l'URI TLD corretto. Puoi trovare qui la documentazione TLD che si applica a JSTL 1.1 e JSTL 1.2. Fare clic sulla taglib di interesse per ottenere gli esempi di dichiarazione. Ad esempio il taglib del core JSTL

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

    Se stai usando Facelets o JSPX invece di JSP, dovrebbe invece essere dichiarato come spazio dei nomi XML

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

Devi solo assicurarti di non avere duplicati delle versioni JSTL precedenti nel classpath (include JDK / JRE's /lib e server /lib ) per evitare collisioni. Se hai il pieno controllo a livello di amministratore sul server, puoi anche posizionare il file JAR nel server /lib invece di webapp /WEB-INF/lib modo che vengano applicati a tutte le webapp distribuite. Almeno NON estrai i file JAR e ingombra il classpath con i loro contenuti (i file TLD sciolti) e / o dichiara i tagli nel web.xml del tuo webapp come suggeriscono alcuni tutorial online.