JSTL JSP Standard Tag Library - PowerPoint PPT Presentation

About This Presentation
Title:

JSTL JSP Standard Tag Library

Description:

J S T L. Introduction. Profusion des langages de programmation de pages ... T L. Fonctions de base. Affichage c: out value=' expression ' / %= expression ... – PowerPoint PPT presentation

Number of Views:1393
Avg rating:3.0/5.0
Slides: 32
Provided by: Bil76
Category:

less

Transcript and Presenter's Notes

Title: JSTL JSP Standard Tag Library


1
JSTLJSP Standard Tag Library
  • Par Bendjaballah Billel Mehdi
  • (Billelmehdi_at_yahoo.com)

Master 2 pro GI option SRR 2004-2005
2
Sommaire
  • Introduction
  • Servlets et JSP
  • Tag Library avec JSP
  • JSTL
  • Expression Language EL
  • Exemples

3
Introduction
  • Profusion des langages de programmation de pages
    dynamiques
  • CGI, PHP, ASP (.NET)
  • Servlets et JSP (JavaServer Pages)
  • Conteneur web Jakarta Tomcat
  • Caractéristiques des grands projets
    dapplications Web.
  • Plusieurs équipes spécialisées.
  • Séparation des tâches.
  • Architecture en modèle MVC (Model View
    Controller)
  • Model Logique métier (EJB,DBMS)
  • View Présentation (JSP, JSTL,..)
  • Controller Servlets

4
Servlets
  • Classes Java
  • Générer des Pages HTML dynamiques depuis des
    requêtes
  • out.println() pour générer du HTML.
  • Inconvénients
  • Code illisible si la page à générer est
    volumineuse (Maintenance)
  • Difficulté à faire la mise en page.
  • Développeur ou web designer?

Public class MyServlet extends HttpServlet
public void doGet(HttpServletRequest
req,HttpServletReponse res) PrintWriter out
res.getWriter() out.println("lthtmlgtltheadgtlttitlegt
Hellolt/titlegtlt/headgt") out.println("ltbodygtHello
Servlet Testlt/bodygtlt/htmlgt")
5
JSP
  • Création de contenu web dynamique simplifiée avec
    JSP
  • Quelques notions sur JSP
  • Éléments de script
  • Scriplets lt code java gt
  • Déclarations lt! Déclarations gt
  • Expressions lt expression gt
  • Syntaxe XML
  • ltjspforward page"forward.jsp" /gt
  • ltjspinclude page"result.jsp" /gt
  • Directives
  • lt_at_page import"java.util."  gt
  • lt_at_taglib prefix"c" uri"WEB-INF/tld/core.tld" gt

6
Servlets et JSP
  • Il est Possible de faire coopérer des Servlets
    avec les JSP
  • JSP pour laffichage allégée en code java
    (présentation)
  • Servlets pour le traitement des requêtes et
    travail en arrière plan plus de code HTML
  • Modèle MVC en Struts et JSF

7
Tag Library TLD
  • Introduites avec la version JSP 1.1
  • Avantages
  • Étendre les balises JSP standards
  • Balises spécifiques à un cas dusage
  • Réduire lutilisation des scriplets
  • Améliorer la lisibilité de la page JSP
  • Libérer les concepteurs de pages du code Java
  • Mise en oeuvre
  • Classe Java Handle avec la librairie
    javax.servlets.jsp.tagext
  • Fichier file.tld descripteur du tag
  • Page JSP utilisant la nouvelle balise

8
Tag Library ExempleHello World
  • La classe Java (Class handler)

Import javax.servlet.jsp.tagext. Public class
Hello extends TagSupport public int
doStartTag() throws JspException try
pageContext.getOut().print("Hello World")
catch (Exception ex) throw new
JspException("IO problems") return
SKIP_BODY
9
Tag Library ExempleHello World
  • Le descripteur hello.tld

lt?xml version"1.0" ?gt lt!DOCTYPE taglib PUBLIC
"-//Sun Microsystems, Inc.//DTD JSP Tag Library
1.1//EN" "http//java.sun.com/j2ee/dtds/web-jsptag
lib_1_1.dtd"gt lttaglibgt lttlibversiongt1.0lt/tlibv
ersiongt ltjspversiongt1.2lt/jspversiongt lt!--
Hello tag --gt lttaggt ltnamegthellolt/namegt
lttagclassgtbasic.Hellolt/tagclassgt
ltbodycontentgtemptylt/bodycontentgt ltinfogt Tag
that Print Hello World lt/infogt lt/taggt lt/taglibgt
10
Tag Library ExempleHello World
  • Utilisation
  • Dans le web.xml
  • Dans la page JSP

ltweb-appgt lttaglibgt lttaglib-urigt
http//www.ecom.com/taglibs/utilitytags
lt/taglib-urigt lttaglib-locationgt
/WEB-INF/tld/utilitytags.tld lt/taglib-locationgt
lt/taglibgt lt/web-appgt
lt_at_ taglib uri"http//www.ecom.com/taglibs/utilit
ytags" prefix"h" gt . . . lthhello/gt . . .
11
JSTL
  • Depuis la version JSP 1.2
  • Spécification développé par le groupe dexperts
    JSR 52
  • Collection de Tag Librairies personnalisées qui
    implémentent la plus part des fonctions communes
    aux pages web
  • Itérations et conditions (core)
  • Formatage des données (format)
  • Manipulation de XML (xml)
  • Accès au bases de données (sql)
  • Utilisation du langage EL (Expression Language)
  • Avantages
  • Code simple, lisible et facile à maintenir
  • Le concepteur de page est libéré de code Java
  • Évite au développeur décrire à chaque fois les
    fonctions de bases.

12
EL Expression Language
  • Spécification de EL sous lautorité du groupe
    dexpert JSR-152 pour JSP 1.3
  • Le JSR-52 et JSR-152 travail ensemble sur la
    spécification de lExpression Language
  • Deux version une pour JSTL et lautre pour JSP
    1.3
  • En JSTL il est utilisé uniquement dans la valeur
    dun attribut
  • ltprefixtag attr1" expr " /gt
  • Il est invoqué exclusivement via la syntaxe
    expr

13
EL Expression Languageobjets prédéfinies
  • Un identificateur dans EL fait référence à une
    variable retourné par lappel de
    pageContext.findAttribute(identificateur) et qui
    est dans la portée (scope) page, request,
    session ou application.
  • var pageContext.getAttribute("var")
  • Objets implicites
  • pageScope, requestScope, sessionScope,
    applicationScope
  • Accès au paramètres dune requête HTTP via param
    (objet de type Map) et paramValue
  • Un objet implicite pageContext qui donne accès
    aux propriétés associés au contexte de la page
    JSP

14
EL Expression LanguageOpérateurs
  • Opérateurs relationnels ( ! lt gt lt gt),
    arithmétiques ( - / ) et logiques (
    !)
  • Lopérateur pour accéder au objets de type
    Map, Array et List
  • Ex param"p1" param.get("p1")

15
JSTLcore tag library
  • Fonction de base
  • Fonction de teste
  • Fonction itérative
  • SQL
  • XML

16
JSTLcore tag library
  • Fonctions de base
  • Affichage
  • ltc out value" expression " /gt lt
    expression gt
  • Affectation
  • ltcset value"value" var" varName " scope"
    application " /gt
  • lt pageContext.setAttribute("varName",value,SCOPE)
    gt
  • Exception java.lang.Throwable
  • ltccatch var"varName" gt
  • actions a surveiller
  • lt/ccatchgt
  • lt try
  • actions à surveiller
  • catch(Throwable varName)
  • gt

17
JSTLcore tag library
  • Les conditions
  • 1- simple if(cond)
  • 2-choix multiple if/else

lt if(user.visitCount 1) gt lt "Prmière
visite.Bienvenue" gt lt gt
ltcif test"user.visitCount 1"gt ltcout
value"Première visite.Bienvenue!" /gt lt/cifgt
ltcchoosegt ltcwhen test"count 0gt Pas
de visite! lt/cwhengt ltcotherwisegt ltcout
value"count"/gt visiteurs. lt/cotherwisegt lt/cc
hoosegt
lt If(count 0) gt lt Votre compte est vide
gt lt else gt lt count"visiteurs" gt lt gt
18
JSTLcore tag library
  • Les itérations avec la boucle for/while
  • en JSP

lt_at_page import"java.util." gt . . . . lt Member
user null Collection users
session.getAttribute("members") Iterator it
users.iterator() while(it.hasNext()) user
(Member) it.next() gt lt "nom
"user.getName() gt lt gt
19
JSTLcore tag library
  • Les itérations avec la boucle for/while
  • forEach

ltcforEach varuser itemssessionScope.members
begin end stepgt ltcout value"nom
user.name" /gt lt/cforEachgt
20
JSTLcore tag library
  • SQL
  • Faire des requêtes
  • Accès au résultat simplifié
  • Faire des mises à jour
  • Faire des transactions

21
JSTLSQL
  • Data source est de type Javax.sql.DataSource
  • ltsqlquery var"customers" dataSource"dataSourc
    e"gt
  • SELECT FROM customers
  • WHERE country Algeria
  • ORDER BY lastname
  • lt/sqlquerygt
  • lttablegt
  • ltcforEach var"row" items"customers.rows"gt
  • lttrgt
  • lttdgtltcout value"row.lastName"/gtlt/tdgt
  • lttdgtltcout value"row.firstName"/gtlt/tdgt
  • lttdgtltcout value"row.address"/gtlt/tdgt
  • lt/trgt
  • lt/cforEachgt
  • lt/tablegt

22
JSTLSQL
  • Data source est de type Javax.sql.DataSource
  • lt_at_page import"java.sql.,javax.sql." gt
  • lt Connection con dataSource.getConnection
  • Statement stm con.createStatement()
  • ResultSet customers stm.executeQuery("SELECT
    FROM customers
  • WHERE country Algeria
  • ORDER BY lastname")
  • gt
  • lttablegt
  • lt while(customers.next()) gt
  • lttrgt
  • lttdgtlt customers.getString("lastName") gtlt/tdgt
  • lttdgtlt customers.getString("lastName") gtlt/tdgt
  • lttdgtlt customers.getString("lastName") gtlt/tdgt
  • lt/trgt
  • lt gt
  • lt/tablegt

23
JSTLSQL
Les transactions
  • ltsqltransaction dataSourcedataSource
  • isolationisolationLevelgt
  • ltsqlquerygt and ltsqlupdategt statements
  • lt/sqltransactiongt
  • isolationLevel "read_committed"
  • "read_uncommitted"
  • "repeatable_read"
  • "serializable"

24
JSTLXML
  • ltxparsegt parse un document XML par sa DTD
  • ltxoutgt Évalue une expression Xpath et affiche le
    résultat
  • ltxtransformgt applique les transformations dune
    feuille de style XSLT sur un document XML

25
JSTLlookup EJB Tag
  • Définition dun tag pour faire le lookup sur un
    EJB
  • En JSP plusieurs instructions complexes
  • Le concepteur de page doit connaître java, les
    EJB et le mécanisme de lookup.

lt_at_page import"javax.naming.,java.rmi.,java.ejb
." gt lt_at_taglib prefix"ejb" uri"" gt lt
Context c new InitialContext() Object obj
c.lookup("javacomp/env/ejb/Admin") EJBHome
home PortableRemoteObject.narrow(obj,EJBHome.cla
ss) gt
26
JSTLlookup EJB Tag
  • Entrée nom JNDI de lEJB nom de la class Home
  • Sortie Objet de type EJBHome sauvegardé dans
    session

ltejblookup var"varName" ejbname"JndiName" ho
mename"HomeClassName" /gt
27
JSTLlookup EJB Tag EJBLookupTag.java
  • public int doStartTag() throws JspException
  • Context c
  • try
  • c new InitialContext()
  • Object obj c.lookup("javacomp/env/e
    jb/"ejbname)
  • home (EJBHome) PortableRemoteObject.narrow(
    obj,homename)
  • if(home null)
  • throw new JspException("EJBLookup
    TagUnable to lookup "ejbname)
  • catch (NamingException ne)
  • throw new JspException("EJBLookupTag
    Caused by "ne.getMessage())
  • return SKIP_BODY
  • public int doEndTag() throws JspException
  • pageContext.setAttribute(home, homeClass,
    PageContext.PAGE_SCOPE)

28
JSTLlookup EJB Tag ejb.tld
  • lttaglibgt
  • .
  • lttaggt
  • ltnamegtlookuplt/namegt
  • lttag-classgtcom.ecom.jstl.EJBLookupTaglt/tag-cla
    ssgt
  • ltbody-contentgtEMPTYlt/body-contentgt
  • ltattributegt
  • ltnamegtvarlt/namegt
  • ltrequiredgttruelt/requiredgt
  • ltrtexprvaluegtfalselt/rtexprvaluegt
  • lt/attributegt
  • ltattributegt
  • ltnamegtejbnamelt/namegt
  • ltrequiredgttruelt/requiredgt
  • ltrtexprvaluegttruelt/rtexprvaluegt
  • lt/attributegt
  • ltattributegt
  • ltnamegthomenamelt/namegt
  • ltrequiredgttruelt/requiredgt

29
JSTLlookup EJB Tag web.xml et index.jsp
  • ltweb-appgt
  • lttaglibgt
  • lttaglib-urigt/jstl-ejb-tagliblt/taglib-urigt
  • lttaglib-locationgt/WEB-INF/ejb.tldlt/taglib-locat
    iongt
  • lt/taglibgt
  • lt/web-appgt
  • lt_at_taglib prfix"ejb" uri"/jstl-ejb-taglib" gt
  • . . .
  • ltejblookup var"admin" ejbname"Admin"
    homename"AdminHome" /gt

30
JSTLQuestions?
Questions?
31
JSTLDemo
La démo
Write a Comment
User Comments (0)
About PowerShow.com