Chapitre 3 Les bibliothèques de balises JSP et la JSTL

Slides:



Advertisements
Présentations similaires
Sintaks : Tentative de guide de mise en œuvre Michel Hassenforder.
Advertisements

FORGES LES EAUX Forges les Eaux avril 2009.
Introduction aux Web Services Partie 1. Technologies XML
JEE 5 - JSF F.Pfister 2 institut eerie Les technologies du web Servlets JSP MVC Model 1 : servlets + JSP MVC Model.
Affichage interactif, bidimensionnel et incrémental de formules mathématiques Hanane Naciri et Laurence Rideau INRIA Sophia Antipolis CARI'2000.
Les Prepositions.
Le developpement web  Préparé par : ASSAL Lamiae JAMALI Zakarya
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Architectures Orientées Services Composants de Service Exemple pratique de développement.
Programmation Web Les JSP.
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Cours 5.3 : XML et les architectures N-tiers – Tier Présentation
Architecture de réseaux
Cours 6 : XML et les architectures N-tiers – Tier Applicatif
Cours 5 : Les Web Services et WSDL Mars Version 1.0 -
51 Les technologies XML Cours 7 : Utilisations dXML Janvier Version 1.0 -
Tutoriel XSLT F. Sajous ERSS – 01/04/2005.
TP 3-4 BD21.
JSP Java Server Pages. Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java propose trois solutions.
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
JOME, un Composant Logiciel pour le Télé-Enseignement des Mathématiques via le WEB, Compatible OpenMath et MathML Laurent DIRAT OVE / I3S-UNSA.
JSP 2 Crash Course Michel Buffa UNSA
Introduction aux Web Services Partie 1. Technologies HTML-XML
Connexion Web et Bases de Données : Technique canevas de fichiers HTML
Introduction aux Web Services Partie 1. Technologies HTML-XML
Common Gateway Interface
LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet
Développement d’applications web
Points importants de la semaine Les commentaires. Les variables. Les instructions conditionnelles. Les instructions itératives (les boucles).
Récursivité.
44 Contrôle du déroulement du programme. 4-2 Objectifs A la fin de ce cours, vous serez capables de : Utiliser les constructions de prise de décision.
UNIVERSITE CHOUAIB DOUKKALI Département des mathématiques
Ecole Supérieure Privée de ingénierie et de technologie année universitaire :2013/2014 Cross-Plateform Cours JavaScript.
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
Composants web (web tiers)
Complément Le diagramme des classes
5.1 URDL22005 Systèmes dexploitation Threads Vue dEnsemble Modèles de Multithreading Problèmes des Threads Pthreads Threads Windows XP Threads Linux Threads.
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
Le langage ASP Les formulaires avec Request. Les formulaires sont employés pour transmettre des informations saisies par un client à une application Web.
1. 2 PLAN DE LA PRÉSENTATION - SECTION 1 : Code HTML - SECTION 2.1. : CSS (Méthode 1) - SECTION 2.2. : CSS (Méthode 2) - SECTION 3 : JavaScript - SECTION.
Notre calendrier français MARS 2014
JSTL JSP Standard Tag Library
Chapitre 3 Syntaxe et sémantique.
Quelle heure est-il ??. THE TIME: OCLOCK IL EST HEURE IL EST + + HEURES etc.
Standard Template Library
1 CSI 2532 Lab6 Application Web et DB Février 27, 2012.
Les nombres.
Veuillez trouver ci-joint
Projet de Master première année 2007 / 2008
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
1 Modèle pédagogique d’un système d’apprentissage (SA)
Module I-C3 : Applications Web IUT R&T 2e année
CALENDRIER-PLAYBOY 2020.
Content Management System CMS. Pourquoi ? Obligation de ressaisir des contenus publiés à plusieurs endroits Pas d’outils de gestion de qualité de l’information.
© 1 Taglibs Applications Struts Taglibs. © 2 Applications Struts Les Tags Libraries Struts Bean : Accès aux JavaBean, aux ressources Html : Gestion des.
Outil de gestion des cartes grises
LES PILES ET FILES.
AngularJS.
Chapitre 6.2 Les curseurs Cours SGBD 3A Mme hkimi Jihène
Créer des packages.
Les balises HTML et les objets JavaScript correspondants Objet document L'objet document est important dans la mesure ou il contient tous les objets du.
 Syntaxe du langage PHP
13 juin Le mécanisme de templates de Sympa.
Page 1Dernière mise à jour: 17 avril 2015 Service de l'enseignement des technologies de l'information, © HEC Montréal, Tous droits réservés.
Struts.
Initiation au JavaScript
Initiation au web dynamique Licence Professionnelle.
02/06/2015© Robert Godin. Tous droits réservés.1 5 Interface entre SQL et un programme n SQL incomplet n Défaut d'impédance (impedance mismatch) – modèle.
Les Java Server Pages Dans ce chapitre, nous allons :
Transcription de la présentation:

Chapitre 3 Les bibliothèques de balises JSP et la JSTL Chapitre 3 - Bibliothèques de balises et JSTL Chapitre 3 Les bibliothèques de balises JSP et la JSTL

Chapitre 3 - Bibliothèques de balises et JSTL Sommaire Les bibliothèques de balises JSP La JSTL (Java Standard Tag Library)

Les bibliothèques de balises JSP

Les bibliothèques de balises Les bibliothèques de balises personnalisables (custom tags Encapsulent des fonctions complexes à utiliser dans les JSPs Utilisées pour la création d'un contenu dynamique Ce sont des classes qui implémentent l'interface Tag du Pacakge javax.servlet.jsp.tagext

include use tags in tag library include use tags in tag library 1 <?xml version = "1.0" ?> 2 <!DOCTYPE html PUBLIC " - //W3C//DTD XHTML 1.0 Strict//EN" 3 "http://www.w3.org/TR/xhtml1/DTD/xhtml1 - strict.dtd" > Use Use taglib taglib directive to directive to 4 Fig. 10.30 JSP 5 <! -- Fig. 10.30: customTagWelcome . jsp -- > include use tags in tag library include use tags in tag library 6 <! -- JSP that uses a custom tag to output content. -- > 7 8 <% -- taglib directive -- %> 9 <%@ taglib uri = "advjhtp1 - taglib.tld" prefix = "advjhtp1" %> 10 11 <html xmlns = "http://www.w3.org/1999/xhtml" > 12 13 <head> 14 <title> Simple Custom Tag Example </title> 15 </head> 16 17 <body> 18 <p> The following text demonstrates a custom tag: </p> 19 <h1> Use custom tag Use custom tag welcome welcome 20 <advjhtp1:welcome /> to insert text in the JSP to insert text in the JSP 21 </h1> 22 </body> 23 24 </html>

WelcomeTag - Handler Tag Lines 15 32 Line 20 1 // Fig. 10.31: WelcomeTagHandler .java 2 // Custom tag handler that handles a simple tag. 3 package com.deitel.advjhtp1.jsp.taglibrary; 4 5 // Java core packages 6 import java. io .*; 7 8 // Java extension packages 9 javax . servlet jsp 10 tagext 11 12 public class extends TagSupport { 13 14 // Method called to begin tag processing 15 public int doStartTag () throws JspException 16 17 // attempt tag processing 18 try 19 // obtain JspWriter to output content 20 out = pageContext getOut (); 21 22 // output content 23 out.print( "Welcome to JSP Tag Libraries!" ); 24 } 25 26 // rethrow IOException to JSP container as 27 catch ( ioException ) { 28 throw new getMessage () ); 29 30 31 return SKIP_BODY ; // ignore the tag's body 33 Class implements interface Tag by extending class JSP container calls method when it encounters the starting custom tag Use custom tag handler ’ s to obtain JSP object for outputting text

library descriptor file advjhtp1 - taglib . tld Line 18 1 <?xml version = "1.0" encoding = "ISO 8859 1" ?> 2 <!DOCTYPE PUBLIC 3 " //Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" 4 "http://java.sun.com/j2ee/dtds/web jsptaglibrary_1_1.dtd" > 5 6 <! -- a tag library descriptor 7 8 < 9 tlibversion 1.0 </ 10 jspversion 1.1 11 shortname 12 13 <info> 14 A simple tab library for the examples 15 </info> 16 17 A simple tag that outputs content 18 <tag> 19 <name> welcome </name> 20 21 tagclass 22 com.deitel.advjhtp1.jsp.taglibrary.WelcomeTagHandler 23 24 25 bodycontent empty 26 27 28 Inserts content welcoming user to tag libraries 29 30 </tag> 31 Define custom tag library descriptor file element describes custom tag Specify custom tag name and class

La JSTL (JSP Standard Tag Library) et le langage EL

Mais qu'est ce qui ne va pas dans les tags JSP ? Chapitre 3 - Bibliothèques de balises et JSTL Mais qu'est ce qui ne va pas dans les tags JSP ? The tag-extension protocol is too complicated Too hard for Gosling, even? Tag handler doStartTag() doEndTag()  doAfterBody() doInitBody() release() doCatch() doFinally()

Organisation JSP/JSTL Your web pages Your application JSTL JavaServer Pages (JSP) Java Servlet API Java language

JSTL Depuis la version JSP 1.2 Spécification développé par le groupe d’experts 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.

EL: Expression Language Spécification de EL sous l’autorité du groupe d’expert JSR-152 pour JSP 1.3 Le JSR-52 et JSR-152 travail ensemble sur la spécification de l’Expression Language En JSTL il est utilisé uniquement dans la valeur d’un attribut: <prefix:tag attr1="${ expr }" /> Il est invoqué exclusivement via la syntaxe ${ expr }

EL: Expression Language objets prédéfinies Un identificateur dans EL fait référence à une variable retourné par l’appel 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 d’une 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

EL: Expression Language objets prédéfinies In ${param.name}, param is one of a set of implicit objects defined in the JSP expression language Others include: pageContext.servletContext pageContext.session pageContext.request pageContext.response paramValues header headerValues

JSTL core tag library Fonctions de base Affichage <c: out value=" expression " /> <%= expression %> Affectation <c:set value="value" var=" varName " scope=" application " /> <% pageContext.setAttribute("varName",value,SCOPE) %> Exception java.lang.Throwable <c:catch [var="varName"] > actions a surveiller </c:catch> <% try{ actions à surveiller }catch(Throwable varName){} %>

JSTL core tag library Les conditions 1- simple if(cond) 2-choix multiple if/else <c:if test="${user.visitCount = = 1}"> <c:out value="Première visite.Bienvenue!" /> </c:if> <% if(user.visitCount == 1){ %> <%= "Prmière visite.Bienvenue" %> <% } %> <c:choose> <c:when test="${count == 0}”> Pas de visite! </c:when> <c:otherwise> <c:out value="${count}"/> visiteurs. </c:otherwise> </c:choose> <% If(count == 0){ %> <%= Votre compte est vide %> <% }else{ %> <%= count+"visiteurs" %> <% } %>

JSTL core tag library en JSTL Les itérations avec la boucle for/while en JSP <%@page import="java.util.*" %> <% Member user = null; Collection users = session.getAttribute("members"); Iterator it = users.iterator(); while(it.hasNext()){ user = (Member) it.next(); %> <%= "nom: "+user.getName() %> <% } %> en JSTL forEach <c:forEach var=”user” items=”sessionScope.members” [begin] [end] [step]> <c:out value="nom: ${user.name}" /> </c:forEach>

Exemple : Code JSP <% Enumeration names=request.getParameterNames(); while (names.hasMoreElements()) { String pname=(String)names.nextElement(); %> <p><b><%= pname %>:</b> <% String[] values=request.getParameterValues(pname); for (int n=0; n<values.length; ++n) { <%= values[n] %> <%} }

Exemple : Code équivalent avec JSTL EL <c:forEach var='parameter' items='${paramValues}'> <p><b><c:out value='${parameter.key}'/></b>: <c:forEach var='value' items='${parameter.value}'> <c:out value='${value}'/> </c:forEach> The <c:xxx> tags are from the JSTL The ${} elements are expression language evaluations