JSTL Java Server Page Standard Tag Library PDF

Summary

This document provides an introduction to JSTL (Java Server Pages Standard Tag Library). It covers the use of JSTL tags, the EL (Expression Language), and how to install and use JSTL libraries within JSP.

Full Transcript

Chapitre 5 : JSTL Introduction JSTL = Java Server Page Standard Tag Library Ensemble de balises prédéfinies organisées en un ensemble de bibliothèques Permet facilement d’accéder et manipuler les données de l'application sans scriptlets. Plus facile à lire car JSTL est basé...

Chapitre 5 : JSTL Introduction JSTL = Java Server Page Standard Tag Library Ensemble de balises prédéfinies organisées en un ensemble de bibliothèques Permet facilement d’accéder et manipuler les données de l'application sans scriptlets. Plus facile à lire car JSTL est basé sur XML, qui est similaire à HTML. But : se passer du code Java au sein des pages JSP cours JEE - Dr. Abdessamad Belangour 185 1 Installation JSTL fait partie de la spécification Jakarta EE Il est par conséquent implémenté par tous les conteneurs de servlet Tomcat fournit une implémentation téléchargeable à l’adresse : http://tomcat.apache.org/download- taglibs.cgi Les bibliothèques téléchargées doivent être placés dans le dossier « WEB-INF/lib » cours JEE - Dr. Abdessamad Belangour 186 Types de JSTL JSTL fournit quatre types de bibliothèques de balises : Core JSTL XML Tag Library Format Tag Library SQL Tag Library Functions Tag Library Il propose aussi un langage nommé EL (Expression Language) qui permet de manipuler des objets Java accessibles dans les différentes pages JSP. cours JEE - Dr. Abdessamad Belangour 187 2 Langage EL : Introduction EL= Expression Language Est un langage de script qui permet d'accéder d'une façon plus simple aux objets Java accessibles dans les différents contextes de la page JSP. La syntaxe de base est ${nomVariable} Exemple : accès à l'attribut nom d'un objet « etudiant » situé dans la session Avec Java: Avec EL: ${sessionScope.etudiant.nom} cours JEE - Dr. Abdessamad Belangour 188 Langage EL : Objets implicites PageScope : variables couvertes par la portée de la page (correpond à PageContext dans JSP) RequestScope : variables couvertes par la portée de la requête (HttpServletRequest) SessionScope : variables couvertes par la portée de la session (HttpSession) ApplicationScope : variables couvertes par la portée de l'application (ServletContext) Param : paramètres de la requête HTTP ParamValues : paramètres de la requête sous forme d'une collection cours JEE - Dr. Abdessamad Belangour 189 3 Langage EL : Objets implicites Header : en-tête de la requête HeaderValues : en-têtes de la requête sous forme d'une collection InitParam : Paramètres d'initialisation du contexte Cookie : valeurs du cookie PageContext : correspond à l'objet PageContext de la page en cours cours JEE - Dr. Abdessamad Belangour 190 Langage EL : Operateurs de base . : permet d'obtenir une propriété d'un objet,  Exemple ${param.nom} [ ] : permet d'obtenir une propriété par son nom ou son indice.  Exemple : ${param[" nom "]}, ${row} empty : Teste si les valeurs de variables sont vides.  Exemple : ${empty param.nom} == ou eq : teste l'égalité de deux objets != ou ne : teste l'inégalité de deux objets cours JEE - Dr. Abdessamad Belangour 191 4 Langage EL : Operateurs de base < ou lt : test strictement inférieur > ou gt : test strictement supérieur = ou ge : test supérieur ou égal + : Addition , - : Soustraction, * : Multiplication, / ou div : Division % ou mod : Modulo && ou and : conjonction || ou or : disjonction ! ou not : Négation d'une valeur cours JEE - Dr. Abdessamad Belangour 192 Langage EL : variables locales Le langage EL ne permet pas l'accès aux variables locales. Pour pouvoir les utiliser, il faut obligatoirement en créer une copie dans une des portées particulières : page, request, session ou application. Exemple : Valeur de x = Valeur de y = Exécution : Valeur de x = // x ne sera pas affiché car c'est une variable locale Valeur de y = 2020 cours JEE - Dr. Abdessamad Belangour 193 5 Core JSTL: introduction Propose un ensemble de tags pour l'itération, le traitement conditionnel et le langage d'expression. Au niveau des pages JSP, la déclaration se fait comme suit: Ces tags sont répartis en 3 catégories : Pour le langage EL : set, out, remove, catch Pour les conditions et itérations : if, choose, forEach, forTokens Pour la gestion des URL : import, url, redirect cours JEE - Dr. Abdessamad Belangour 194 Core JSTL : balise Permet de stocker une variable dans une portée particulière (page, requête, session ou application). Dispose des attributs suivants: var : nom de la variable qui va stocker la valeur value : valeur à stocker scope : portée de la variable qui va stocker la valeur target : nom de la variable contenant un bean dont la propriété doit être modifiée property : nom de la propriété à modifier cours JEE - Dr. Abdessamad Belangour 195 6 Core JSTL : balise Exemples : Remarque 1 : la valeur peut être déterminée dynamiquement : Remarque 2 : La valeur de la variable peut être précisée dans le corps de la balise Valeur de ma variable cours JEE - Dr. Abdessamad Belangour 196 Core JSTL : balise Est utilisée pour afficher les valeurs contenues dans variables ou le résultat d'une expression implicite de la même façon que Attributs : Value : valeur à afficher (obligatoire) Default : définir une valeur par défaut si la valeur est null escapeXml : booléen qui permet de convertir les caractères spéciaux à leurs codes correspondants Elle offre en plus la possibilité d'accès aux propriétés grâce au "." cours JEE - Dr. Abdessamad Belangour 197 7 Core JSTL : balise Exemples : cours JEE - Dr. Abdessamad Belangour 198 Core JSTL : balise Remarque : Si la protée de la variable n'est pas précisée la variable est recherchée prioritairement dans la page, puis la requête, puis la session et enfin l'application. L'attribut default définit une valeur par défaut si le résultat de l'évaluation de la valeur est null. Si la valeur est null et que l'attribut default est absent alors c'est une chaîne vide qui est renvoyée Exemple : cours JEE - Dr. Abdessamad Belangour 199 8 Core JSTL : balise Remarque : exemple de génération de code dans un formulaire sans passer par les scriplets. cours JEE - Dr. Abdessamad Belangour 200 Core JSTL : balise Permet de supprimer une variable d'une portée particulière. attributs : Var : nom de la variable à supprimer (obligatoire) Scope : portée de la variable Exemples : cours JEE - Dr. Abdessamad Belangour 201 9 Core JSTL : balise Permet de capturer des exceptions qui sont levées lors de l'exécution du code inclus dans son corps. Attributs : Var : nom d'une variable qui va contenir des informations sur l'anomalie cours JEE - Dr. Abdessamad Belangour 202 Core JSTL : balise Exemple : la valeur n'est pas numerique Resultat : la valeur n'est pas numerique cours JEE - Dr. Abdessamad Belangour 203 10 Core JSTL : balise Remarque : L'objet désigné par l'attribut var du tag catch possède une propriété message qui contient le message d'erreur Exemple : Résultat : In , value attribute can not be parsed: "abc" cours JEE - Dr. Abdessamad Belangour 204 Core JSTL : balise Remarque : Le problème avec cette balise est qu'il n'est pas possible de savoir quelle exception a été levée. cours JEE - Dr. Abdessamad Belangour 205 11 Core JSTL : balise Évalue une expression et affiche le contenu de son corps uniquement si l'expression est évaluée à Vrai. Attributs : test : condition à évaluer var : nom de la variable qui contiendra le résultat de l'évaluation scope : portée de la variable qui contiendra le résultat Exemples: Inconnu cours JEE - Dr. Abdessamad Belangour 206 Core JSTL : balise Permet d'effectuer un choix parmi plusieurs mutuellement exclusifs Ne possède pas d'attributs mais deux balises filles et Exemple : Bonjour Monsieur Bonjour Madame cours JEE - Dr. Abdessamad Belangour 207 12 Core JSTL : balise Bonjour Mademoiselle Bonjour cours JEE - Dr. Abdessamad Belangour 208 Core JSTL : balises et Constituent une alternative au boucles Java dans les scriptlets. La balise itère sur une collection d'objets. La balise est utilisée pour diviser une chaîne en jetons et les parcourir. Attributs communs : var : nom de la variable qui contient l'élément en cours de traitement items : collection à traiter varStatus : nom d'une variable qui va contenir des informations sur l'itération en cours de traitement cours JEE - Dr. Abdessamad Belangour 209 13 Core JSTL : balises et begin : numéro du premier élément à traiter (le premier possède le numéro 0) end : numéro du dernier élément à traiter step : pas des éléments à traiter (par défaut 1) Attribut en plus pour : delims : Caractères à utiliser comme délimiteurs ou séparateurs. Exemple pour élément cours JEE - Dr. Abdessamad Belangour 210 Core JSTL : balises et Exemple pour : Remarque : varStatus permet de définir une variable qui va contenir des informations sur l'itération en cours d'exécution. Cette variable possède plusieurs propriétés : index indique le numéro de l'occurrence dans l'ensemble de la collection count indique le numéro de l'itération en cours (en commençant par 1) first booléen qui indique si c'est la première itération last booléen qui indique si c'est la dernière itération cours JEE - Dr. Abdessamad Belangour 211 14 Core JSTL : balises et Exemple : index = : count = : value = : Premier element : Dernier element Résultat : index = 1 : count = 1 : value = 1 : Premier element index = 4 : count = 2 : value = 4 index = 7 : count = 3 : value = 7 index = 10 : count = 4 : value = 10 : Dernier element cours JEE - Dr. Abdessamad Belangour 212 Core JSTL : balise Permet d'inclure une ressource identifiée par une URL tout comme l'action mais a l'avanatage de ne pas être limité au contexte de l'application web. Attributs : url : URL de la ressource (relative à l'application web ou absolue) var : nom de la variable qui va stocker le contenu de la ressource sous la forme d'une chaîne de caractères scope : portée de la variable qui va stocker le contenu de la ressource context : contexte de l'application Web qui contient la ressource (si la ressource n'est pas l'application web courante) cours JEE - Dr. Abdessamad Belangour 213 15 Core JSTL : balise charEncoding : jeu de caractères utilisé par la ressource varReader : nom de la variable qui va stocker le contenu de la ressource sous la forme d'un objet de type java.io.Reader Exemples : Import dircet du contenu de la ressource : Import du contenu de la ressource dans une variable : cours JEE - Dr. Abdessamad Belangour 214 Core JSTL : balise Permet de faire une redirection vers une nouvelle URL. Les paramètres peuvent être fournis grâce à un ou plusieurs tags fils param. Exemple : cours JEE - Dr. Abdessamad Belangour 215 16 Core JSTL : balise Formate une URL en chaîne et la stocke dans une variable. C'est une alternative à l'appel de la méthode response.encodeURL() Attributs : value : base de l'URL (obligatoire) var : nom de la variable qui va stocker l'URL scope : portée de la variable qui va stocker l'URL context : contexte. Admet param comme balise fille, cette balise dispose des attributs : name : nom du paramètre value : valeur du paramètre cours JEE - Dr. Abdessamad Belangour 216 Core JSTL : balise Exemple : TEST cours JEE - Dr. Abdessamad Belangour 217 17 Core JSTL : Exercices 1) Créer une page jsp qui affiche dans un tableau HTML la table de multiplication du nombre 3. 2) Créer une page web jsp permettant d'afficher les nombres pairs compris entre 1 et 40 en utilisant la JSTL. 3) Développer une page jsp qui prend en paramètre un nombre et calcule s’il est premier ou non cours JEE - Dr. Abdessamad Belangour 218 Solution exercice 1 Table de multiplication du nombre 3 Table de multiplication du nombre 3 cours JEE - Dr. Abdessamad Belangour 219 18 Solution exercice 1 (suite) 3 x = cours JEE - Dr. Abdessamad Belangour 220 Solution exercice 2 Les nombres pairs compris entre 1 et 40 cours JEE - Dr. Abdessamad Belangour 221 19 Solution exercice 3 Fichier index.html Entrer un nombre : cours JEE - Dr. Abdessamad Belangour 222 Solution exercice 3 (suite) Fichier traitement.jsp cours JEE - Dr. Abdessamad Belangour 223 20 Solution exercice 3 (suite) est premier n'est pas premier cours JEE - Dr. Abdessamad Belangour 224 XML JSTL: introduction Elle est utilisée pour le traitement des données XML comme l'analyse, la sélection et la transformation dans une page JSP. Syntaxe de la balise principale: cours JEE - Dr. Abdessamad Belangour 225 21 XML JSTL Exemple de fichier XML : Alaoui Ali Tahiri Hassan Omari Omar cours JEE - Dr. Abdessamad Belangour 226 XML JSTL S'appuie sur le langage de requêtes XPath pour naviguer dans un document XML et localiser un nœud particulier. Exemples d'expressions Xpath appliquées sur l'exemple précédent: / : sélectionne tout le document, y compris le doctype //etudiant : sélectionne tous les éléments "etudiant" du document //etudiant[@id='2'] : sélectionne l'étudiant qui a l'attribut id égal à 2 cours JEE - Dr. Abdessamad Belangour 227 22 XML JSTL : Catégories de balises XML Catégories de balises XML JSTL : Fondamentale : parse, set, out Gestion du flux (condition et itération) : if, choose, forEach Transformation XSLT : transform cours JEE - Dr. Abdessamad Belangour 228 XML JSTL : balise Permet d'analyser un document et de stocker le résultat dans une variable qui pourra être exploitée par la JSP. Attributs : xml : contenu du document à analyser var : nom de la variable qui va contenir l'arbre DOM généré par l'analyse scope : portée de la variable qui va contenir l'arbre DOM varDom : variable de type Document pour le document XML analysé scopeDom : portée de la variable varDom filter : filtre à appliquer sur le document source system : URI du document XML en cours d'analyse cours JEE - Dr. Abdessamad Belangour 229 23 XML JSTL : balise Exemple : Remarque : Dans cet exemple, le fichier etudiants.xml se trouve dans le dossier racine de l'application Web. cours JEE - Dr. Abdessamad Belangour 230 XML JSTL : balise Equivalent au tag set de la bibliothèque Core. Il permet d'évaluer l'expression Xpath fournie dans l'attribut select et de placer le résultat de cette évaluation dans une variable. L'attribut var permet de préciser la variable qui va recevoir le résultat de l'évaluation sous la forme d'un noeud de l'arbre du document XML. Attributs : select : expression XPath à évaluer var : nom de la variable qui va stocker le résultat de l'évaluation scope : portée de la variable qui va stocker le résultat cours JEE - Dr. Abdessamad Belangour 231 24 XML JSTL : balise Exemple : nom = cours JEE - Dr. Abdessamad Belangour 232 XML JSTL : balise Equivalent à celui de la bibliothèque Core Affiche le résultat d'une expression Xpath Attributs : select : expression XPath à évaluer escapeXML : true par défaut, si le contenu comprend des tags HTML, XML ou autres ils seront affichés tels quels. A false c'est l'évaluation des tags qui sera affichée Exemple : Afficher le nom de l'étudiant dont l'id est 2 cours JEE - Dr. Abdessamad Belangour 233 25 XML JSTL : balise Remarque : Pour stocker le résultat de l'évaluation d'une expression dans une variable, il faut utiliser une combinaison du tag x:out et c:set Exemple : cours JEE - Dr. Abdessamad Belangour 234 XML JSTL : balise évalue une expression XPath, si elle est vraie, traite son corps sinon l'ignore. Attributs : select : expression XPath à évaluer sous la forme d'un booléen var : nom de la variable qui va stocker le résultat de l'évaluation scope : portée de la variable qui va stocker le résultat de l'évaluation cours JEE - Dr. Abdessamad Belangour 235 26 XML JSTL : balise Exemple : JSTL x:if Tags Info livres: PHP Ali 100 cours JEE - Dr. Abdessamad Belangour 236 XML JSTL : balise Java Omar 2000 Le Document a au moins un element. les prix des livres sont très élévés cours JEE - Dr. Abdessamad Belangour 237 27 XML JSTL : balise Permet d'effectuer un choix parmi plusieurs mutuellement exclusifs Ne possède pas d'attributs mais deux balises filles et La balise a un seul attribut qui est : select : condition à évaluer Exemple : cours JEE - Dr. Abdessamad Belangour 238 XML JSTL : balise Programmer en Java Ali 100 Maitriser Java EE Omar 2000 cours JEE - Dr. Abdessamad Belangour 239 28 XML JSTL : balise Livre écrit par Ali Livre écrit par Omar Auteur inconnu cours JEE - Dr. Abdessamad Belangour 240 XML JSTL : balise Est utilisée pour boucler sur les nœuds d'un document XML. Attributs : select : expression XPath à évaluer var : nom de la variable pour stocker l'élément en cours pour chaque boucle begin : index de début pour l'itération end : index de fin pour l'itération step : taille de l'incrément d'index lors d'une itération sur la collection varStatus : nom de la variable dans laquelle le statut de l'itération est stocké cours JEE - Dr. Abdessamad Belangour 241 29 XML JSTL : balise Exemple PHP Ali 100 Java Omar 2000 cours JEE - Dr. Abdessamad Belangour 242 XML JSTL : balise nom livre: cours JEE - Dr. Abdessamad Belangour 243 30 XML JSTL : balise Permet d'appliquer une transformation XSLT à un document XML. Attributs : xslt : feuille se style XSLT (obligatoire) xml : nom de la variable qui contient le document XML à traiter var : nom de la variable qui va recevoir le résultat de la transformation scope : portée de la variable qui va recevoir le résultat de la transformation docSystemId : system identifier (URI) pour parser le document XML xsltSystemId : system identifier (URI) parser le document XSLT result : chaîne de caractères qui contient le résultat de la transformation cours JEE - Dr. Abdessamad Belangour 244 XML JSTL : balise Exemple : Remarque : Le document xml à traiter peut être fourni dans le corps de la balise: Exemple : Alaoui …. Remarque : la balise transform peut avoir un ou plusieurs nœuds fils param pour fournir des paramètres à la feuille de style XSLT. cours JEE - Dr. Abdessamad Belangour 245 31 XML JSTL : Exercices 1) Ecrire une page JSP qui prend le fichier XML des étudiants en entrée et le présente dans un tableau HTML comme sur la figure 2) Reprendre l'exercice précédent mais cette fois en confiant la transformation à un fichier XSL cours JEE - Dr. Abdessamad Belangour 246 Solution exercice 1 Liste des étudiants Liste des étudiants : cours JEE - Dr. Abdessamad Belangour 247 32 Solution exercice 1 (suite) ID Nom Prénom cours JEE - Dr. Abdessamad Belangour 248 Solution exercice 2 Fichier etudiants-xsl.xsl etudiants-xsl.xsl cours JEE - Dr. Abdessamad Belangour 249 33 Solution exercice 2 (suite) Liste des etudiants : ID Nom Prenom cours JEE - Dr. Abdessamad Belangour 250 Solution exercice 2 (suite) Fichier JSP Fichier JSP cours JEE - Dr. Abdessamad Belangour 251 34 Format Tag Library : introduction La bibliothèque Format Tag est utilisée pour formater et analyser les données pouvant être un simple message, une date, une heure ou un nombre. Elle Supporte l'internationalisation dans les pages JSP Syntaxe de la bibliothèque de balises de format: cours JEE - Dr. Abdessamad Belangour 252 Format Tag Library : internationalisation L'internationalisation (notée i18n) consiste à disposer un site Web donnée en plusieurs langues. Chaque langue (appelée locale) dispose de sa propre façon de noter les nombres, les dates, etc. La localisation des messages, est réalisée à travers un ensemble de fichiers appelés bundle en anglais. Nous pouvons avoir un bundle pour les menus, un autre pour les messages, etc… Pour chaque bundle il faut définir un ensemble de fichiers où chaque fichier représente une langue particulière en plus d'un fichier pour la langue par défaut. cours JEE - Dr. Abdessamad Belangour 253 35 Format Tag Library : internationalisation Ces fichiers ont un préfixe commun appelé basename et doivent avoir comme extension.properties Les fichiers pour les langues particulières utilisent le préfixe commun suivi du caractère "_" puis du code langue et éventuellement d'un "_" suivi du code pays. Exemple : messages.properties // pour la langue par défaut messages_en.properties // pour l'anglais messages_ar.properties // pour l'arabe cours JEE - Dr. Abdessamad Belangour 254 Format Tag Library : internationalisation Remarque: Les fichiers de l’internationalisation doivent être placés dans un sous-dossier du dossier src. Par exemple : i18n Après compilation ce dossier est copié dans le dossier web- inf/classes cours JEE - Dr. Abdessamad Belangour 255 36 Format Tag Library : internationalisation Dans chaque fichier, les clés sont identiques, seule la valeur associée change. Exemple : le fichier messages.properties pour le français (langue par défaut) msg=bonjour Exemple : le fichier messages_en.properties pour l'anglais msg=Hello Exemple : le fichier messages_ar.properties pour l'arabe msg=‫مرحبا‬ cours JEE - Dr. Abdessamad Belangour 256 Format Tag Library : catégories de balises Catégories de balises : Définition de la langue : setLocale Formatage de messages : bundle, message, setBundle Formatage de dates et nombres : formatNumber, parseNumber , formatDate, parseDate, setTimeZone, timeZone cours JEE - Dr. Abdessamad Belangour 257 37 Format Tag Library : balise Permet de préciser un bundle à utiliser dans les traitements contenus dans son corps. Attributs : basename : nom de base de la ressource à utiliser (obligatoire) prefix : valeur préfixant chaque nom de clé pour les sous-attributs Exemple : cours JEE - Dr. Abdessamad Belangour 258 Format Tag Library : balise Permet de déclarer un bundle par défaut. Attributs : basename : nom de base de la ressource à utiliser (obligatoire) var : nom de la variable qui va stocker le nouveau bundle scope : portée de la variable qui va recevoir le nouveau bundle Exemple : monMessage = cours JEE - Dr. Abdessamad Belangour 259 38 Format Tag Library : balise Permet de localiser un message. Attributs : key : clé du message à utiliser bundle : bundle à utiliser var : nom de la variable qui va recevoir le résultat du formatage scope : portée de la variable qui va recevoir le résultat du formatage Exemple : mon message = Résultat : mon message = bonjour cours JEE - Dr. Abdessamad Belangour 260 Format Tag Library : balise Remarque : Si aucune valeur n'est trouvée pour la clé fournie alors le tag renvoie ???XXX ??? où XXX représente le nom de la clé. Exemple : mon message = Résultat : mon message = ???test??? cours JEE - Dr. Abdessamad Belangour 261 39 Format Tag Library : balise Permet de sélectionner une nouvelle Locale. Exemple : Résultat : mon message = Hello cours JEE - Dr. Abdessamad Belangour 262 Format Tag Library : balise Permet de formater des nombres selon la locale. Attributs : value : valeur à formater type : CURRENCY ou NUMBER ou PERCENT pattern : format personnalisé currencyCode : code de la monnaie à utiliser pour le type CURRENCY currencySymbol : symbole de la monnaie à utiliser pour le type CURRENCY groupingUsed : booléen pour préciser si les nombres doivent être groupés maxIntegerDigits : nombre maximum de chiffres dans la partie entière minIntegerDigits : nombre minimum de chiffres dans la partie entière cours JEE - Dr. Abdessamad Belangour 263 40 Format Tag Library : balise maxFractionDigits : nombre maximum de chiffres dans la partie décimale minFractionDigits : nombre minimum de chiffres dans la partie décimale var : nom de la variable qui va stocker le résultat scope : portée de la variable qui va stocker le résultat Exemple : montant = cours JEE - Dr. Abdessamad Belangour 264 Format Tag Library : balise Exemple : Formatage du nombre : Nombre formaté 1: Nombre formaté 2: Nombre formaté 3: Nombre formaté 4: Nombre formaté 5: Nombre formaté 6: cours JEE - Dr. Abdessamad Belangour 265 41 Format Tag Library : balise Résultat (nombre 9850.14115) : Formatage du nombre : Nombre formaté 1: $9,850.14 Nombre formaté 2: 9,850.141 Nombre formaté 3: 850.141 Nombre formaté 4: 9,850.14115 Nombre formaté 5: 5,014% Nombre formaté 6: 9850.141$ cours JEE - Dr. Abdessamad Belangour 266 Format Tag Library : balise Permet de convertir une chaîne de caractères qui contient un nombre en une variable décimale. Attributs : value : valeur à traiter type : CURRENCY ou NUMBER ou PERCENT parseLocale : Locale à utiliser lors du traitement integerOnly : booléen qui indique si le résultat doit être un entier (true) ou un flottant (false) pattern : format personnalisé var : nom de la variable qui va stocker le résultat scope : portée de la variable qui va stocker le résultat cours JEE - Dr. Abdessamad Belangour 267 42 Format Tag Library : balise Exemple : Convertir en entier un identifiant passé en paramètre de la requête cours JEE - Dr. Abdessamad Belangour 268 Format Tag Library : balise Permet de formater des dates selon la Locale. Attributs : value : valeur à formater type : DATE ou TIME ou BOTH dateStyle : FULL ou LONG ou MEDIUM ou SHORT ou DEFAULT timeStyle : FULL ou LONG ou MEDIUM ou SHORT ou DEFAULT pattern : format personnalisé timeZone : timeZone utilisée pour le formatage var : nom de la variable qui va stocker le résultat scope : portée de la variable qui va stocker le résultat cours JEE - Dr. Abdessamad Belangour 269 43 Format Tag Library : balise Exemple : Nous sommes le. cours JEE - Dr. Abdessamad Belangour 270 Format Tag Library : balise Permet d'analyser une chaîne de caractères contenant une date pour créer un objet de type java.util.Date Attributs : value : valeur à traiter type : DATE ou TIME ou BOTH dateStyle : FULL ou LONG ou MEDIUM ou SHORT ou DEFAULT timeStyle : FULL ou LONG ou MEDIUM ou SHORT ou DEFAULT pattern : format personnalisé parseLocale : Locale utilisée pour le formatage timeZone : timeZone utilisée pour le formatage var : nom de la variable de type java.util.date qui va stocker le résultat scope : portée de la variable qui va stocker le résultat cours JEE - Dr. Abdessamad Belangour 271 44 Format Tag Library : balise permet de stocker un fuseau horaire dans une variable. Attributs : value : fuseau horaire à stocker (obligatoire) var : nom de la variable de stockage scope : portée de la variable de stockage cours JEE - Dr. Abdessamad Belangour 272 Format Tag Library : balise Permet de préciser un fuseau horaire particulier à utiliser dans son corps. Attributs : value : chaîne de caractères ou objet java.util.TimeZone qui précise le fuseau horaire à utiliser cours JEE - Dr. Abdessamad Belangour 273 45 Format Tag Library : Exercices 1) Ecrire une page JSP qui affiche un message de bienvenu par défaut en anglais 2) Modifier le fichier précédent pour imposer l'affichage du message en français 3) Modifier le fichier précèdent pour modifier le message dynamiquement en plusieurs langues (en, ar, fr, de) comme sur la figure 4) Ecrire une page JSP internationalisant un formulaire contenant un "user name" et un password. cours JEE - Dr. Abdessamad Belangour 274 Solution exercice 1 Contenu du fichier messages.properties : label.welcome = Welcome i18n Contenu du fichier messages_fr.properties : label.welcome = Bienvenu … cours JEE - Dr. Abdessamad Belangour 275 46 Solution exercice 2 i18n cours JEE - Dr. Abdessamad Belangour 276 Solution exercice 3 i18n English ‫< عربي‬/a> Français Deutsch cours JEE - Dr. Abdessamad Belangour 277 47 Solution exercice 4 … cours JEE - Dr. Abdessamad Belangour 278 SQL JSTL Fournit un support SQL pour accéder à des bases de données relationnelles telles que Oracle, MySql, etc... Syntaxe de la bibliothèque de balises SQL: Catégories de balises : Définition de la source de données : setDataSource Exécution de requêtes SQL : query, transaction, update cours JEE - Dr. Abdessamad Belangour 279 48 SQL JSTL : balise Permet de créer une connexion vers la base de données Attributs : driver : nom de la classe du pilote JDBC à utiliser source : URL de la base de données à utiliser user : nom de l'utilisateur à utiliser lors de la connexion password : mot de passe de l'utilisateur à utiliser lors de la connexion var : nom de la variable qui va stocker l'objet créé lors de la connexion scope : portée de la variable qui va stocker l'objet créé dataSource : nom JNDI de la datasource cours JEE - Dr. Abdessamad Belangour 280 SQL JSTL : balise Exemples : Cas de base de données Derby :  Cas de base de données MySQL :  cours JEE - Dr. Abdessamad Belangour 281 49 SQL JSTL : balise Permet d'éxecuter des requêtes de sélection sur une source de données. Attributs : sql : requête SQL à exécuter var : nom de la variable qui stocke les résultats de l'exécution de la requête scope : portée de la variable qui stocke les résultats startRow : numéro de l'occurrence de départ à traiter maxRow : nombre maximum d'occurrences à stocker dataSource : connexion particulière à la base de données à utiliser cours JEE - Dr. Abdessamad Belangour 282 SQL JSTL : balise Exemple : Remarque : La requête SQL peut être précisée avec l'attribut sql ou dans le corps du tag : Exemple : SELECT * FROM etudiants cours JEE - Dr. Abdessamad Belangour 283 50 SQL JSTL : balise Le résultat de la requete est stocké dans la variable spcifiée par l'attribut var. Cette variable est un objet de type jakarta.servlet.jsp.jstl.sql.Result qui dispose des méthodes suivantes : String[] getColumnNames() : renvoie les noms des colonnes int getRowCount() : renvoie le nombre d'enregistrements trouvés Map[] getRows() : renvoie un tableau de Map où chaque élément représente une rangée. Object[][] getRowsByIndex() : renvoie un tableau contenant les colonnes et leurs valeurs boolean isLimitedByMaxRows() : renvoie un booléen qui indique si le résultat de la requête a été limité Exemple : Nombre d'enregistrements trouvés : cours JEE - Dr. Abdessamad Belangour 284 SQL JSTL : balise Exemple 2: parcours des résultat avec foreach id nom prenom cours JEE - Dr. Abdessamad Belangour 285 51 SQL JSTL : balise : Requête avec paramètres La requête SQL peut avoir des paramètres grâce au caractère "?". La valeur de ce paramètre est définie grâce aux balises ou s'il s'agit d'une date. Attribut de la balise : value : valeur de l'occurrence correspondante dans la requête SQL Attribut de la balise : value : objet de type java.util.Date qui contient la valeur de la date (obligatoire) type : format de la date : TIMESTAMP ou DATE ou TIME cours JEE - Dr. Abdessamad Belangour 286 SQL JSTL : balise : Requête avec paramètre Exemple : SELECT * FROM etudiants where id = ? cours JEE - Dr. Abdessamad Belangour 287 52 SQL JSTL : balise Permet d'encapsuler plusieurs requêtes SQL dans une transaction. Attributs : dataSource : connexion particulière à la base de données à utiliser isolation : READCOMMITTED ou READUNCOMMITTED ou REPEATABLEREAD ou SERIALIZABLE cours JEE - Dr. Abdessamad Belangour 288 SQL JSTL : balise permet de réaliser une mise à jour grâce à une requête SQL sur la source de données. attributs : sql : requête SQL à exécuter var : nom de la variable qui stocke le nombre d'occurrences impactées par l'exécution de la requête scope : portée de la variable qui stocke le nombre d'occurrences impactées dataSource : connexion particulière à la base de données à utiliser cours JEE - Dr. Abdessamad Belangour 289 53 SQL JSTL : balise Exemple : UPDATE etudiants SET nom = ? WHERE id=? nb enregistrements modifiés = cours JEE - Dr. Abdessamad Belangour 290 SQL JSTL : exercice Reprendre le dernier exercice du chapitre JDBC et transformer le code JSP réservé pour l'affichage en utilisant SQL JSTL. cours JEE - Dr. Abdessamad Belangour 291 54 SQL JSTL : Solution JSP Page cours JEE - Dr. Abdessamad Belangour 292 SQL JSTL : Solution SELECT * FROM ETUDIANT Liste des Etudiants Inscrits : CNE NOM PRENOM cours JEE - Dr. Abdessamad Belangour 293 55 SQL JSTL : Solution retour à la page d'accueil cours JEE - Dr. Abdessamad Belangour 294 Functions Tag Library Contient un ensemble de fonctions de manipulation de chaînes de caractères pouvant être utilisées avec le langage d'expression JSP. Syntaxe de la bibliothèque de balises de fonction: Liste des fonctions : fn:contains() : Vérifie si une chaîne contient une sous-chaîne spécifiée. fn:containsIgnoreCase() : Vérifie si une chaîne contient une sous-chaîne spécifiée sans tenir compte de la casse fn:endsWith() : Vérifie si une chaîne se termine par le suffixe spécifié. cours JEE - Dr. Abdessamad Belangour 295 56 Functions Tag Library fn:escapeXml() : Remplace les caractères XML spéciaux par leurs codes fn:indexOf() : Renvoie l'index de la première occurrence de la sous-chaîne spécifiée. fn:join() : Joint tous les éléments d’un tableau avec la chaîne spécifiée. fn:length() : Renvoie le nombre d'éléments d'un tableau, d'une collection ou d'une chaîne de caractères. fn:replace() : Remplace une chaîne par une autre chaîne. fn:split() : Retourne un tableau de chaînes délimitées par le caractère en paramètre. fn:startsWith() : Retourne True si la chaîne commence par le préfixe spécifié. fn:endsWith() : Retourne True si la chaîne se termine par le suffixe spécifié. cours JEE - Dr. Abdessamad Belangour 296 Functions Tag Library fn:substring() : Retourne une sous-chaîne d’une chaîne de caractères. fn:substringAfter() : Retourne une sous-chaîne d’une chaîne de caractères après la sous- chaîne. fn:toLowerCase() : Renvoie tous les caractères de la chaîne en minuscule. fn:toUpperCase() : Renvoie tous les caractères de la chaîne en majuscule. fn:trim() : Supprime les espaces blancs au début et à la fin de la chaîne. cours JEE - Dr. Abdessamad Belangour 297 57 Functions Tag Library : Exemples Exemple 1 (fn:contains()): monde trouvée cours JEE - Dr. Abdessamad Belangour 298 Functions Tag Library : Exemples Exemple 2 (containsIgnoreCase ()): monde trouvée cours JEE - Dr. Abdessamad Belangour 299 58 Functions Tag Library : Exemples Exemple 3 (fonction endsWith) : monde trouvée cours JEE - Dr. Abdessamad Belangour 300 Functions Tag Library : Exercices 1) Ecrire une page JSP qui prend en paramètre une chaine de caractères et vérifie si c'est un palindrome (se lit des deux côtés) en supprimant d'éventuels espaces et en ignorant la casse. 2) Ecrire une page JSP qui cherche si un mot existe dans un fichier texte (qu'il faudra importer) et si oui affiche le nombre de ses occurrences. cours JEE - Dr. Abdessamad Belangour 301 59 Functions Tag Library : Solution Exercice 1 Index.html palindrome Mot cours JEE - Dr. Abdessamad Belangour 302 Functions Tag Library : Solution Exercice 1 (2) palindrome.jsp palidrome cours JEE - Dr. Abdessamad Belangour 303 60 Functions Tag Library : Solution Exercice 1 (3) cours JEE - Dr. Abdessamad Belangour 304 Functions Tag Library : Solution Exercice 1 (4) est palindrome n'est pas palindrome cours JEE - Dr. Abdessamad Belangour 305 61 Functions Tag Library : Solution Exercice 2 index.html Nombre d'occurences : index.html Mot : Fichier : cours JEE - Dr. Abdessamad Belangour 306 Functions Tag Library : Solution Exercice 2 (2) nbrOccurences.jsp nbrOccurences.jsp cours JEE - Dr. Abdessamad Belangour 307 62 Functions Tag Library : Solution Exercice 2 (3) Nombre d'occurences du mot = n'existe pas dans le fichier cours JEE - Dr. Abdessamad Belangour 308 63

Use Quizgecko on...
Browser
Browser