JSTL JSP Standard Tag Library

Slides:



Advertisements
Présentations similaires
Serveur d’applications JEE
Advertisements

JEE 5 - JSF F.Pfister 2 institut eerie Les technologies du web Servlets JSP MVC Model 1 : servlets + JSP MVC Model.
C#3 et le projet Linq Mitsuru FURUTA
Conception de Site Webs dynamiques Cours 5
La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
Exposé de Système - Informatique et Réseau
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
Cours 6 : XML et les architectures N-tiers – Tier Applicatif
51 Les technologies XML Cours 7 : Utilisations dXML Janvier Version 1.0 -

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.
Servlet JAVA.
Manipulation d’XML avec XSL
JSP 2 Crash Course Michel Buffa UNSA
Présentation des frameworks pour Java EE
Connexion Web et Bases de Données : Technique canevas de fichiers HTML
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet
CPI/BTS 2 Programmation Web Introduction au PHP
UNIVERSITE CHOUAIB DOUKKALI Département des mathématiques
Struts 1 & 2 Tlohi ibtissam Tabit boutaina Ilias bouras
Applications Internet
M2 – MIAGE/SID Servlet M2 – MIAGE/SID
SERVLETS PRESENTATION
Xml/xslt : Extensible Stylesheet Language Transformation réalisé par: saÏd NAÏM.
Projet JAVA EE Approfondi
Composants web (web tiers)
Le langage Javascript pour le web
1 PHP 1.Langage PHP 1.1. Types de base, variables et constantes 1.2. Opérateurs et expressions 1.3. Instructions 1.4. Fonctions 2.Accès aux bases de données:
Architecture dun site de vente au détail1 Modèle d'un site simple de vente Lexemple du livre Ruby on Rails Partie II Java Adventure Builder Demo Réalisé.
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Servlets.
JSP (Java Server Pages)
1 CSI 2532 Lab6 Application Web et DB Février 27, 2012.
Michel Coletta - Journées PATTERNS Avril Grenoble1 STRUTS Introduction Technologies Java Architecture Développement Enseigner quoi ?
Adaptée du cours de Richard Grin
Chapitre 3 Les bibliothèques de balises JSP et la JSTL
PHP 2° PARTIE : FONCTIONS ET FORMULAIRE
Initiation au web dynamique - TP
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
M2 – MIAGE/SID Servlet M2 – MIAGE/SID
Marc Le BihanStruts 1.x1 Marc Le Bihan. Struts 1.x2 Plan I)Développement web par Servlets et JSP. II)Prise en charge de Struts. III)Principe de fonctionnement.
PHP 1° PARTIE : LES BASES © BTS IRIS 2002 [tv] Présentation Historique
PHP & My SQL.
Module I-C3 : Applications Web IUT R&T 2e année
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.
XSL eXtensible Stylesheet Language Historique 1999: XSLT 1.0 et XPATH 1.0 : versions supportées par la plupart des outils depuis février 2007 XSLT 2.0.
Découverte des Framework : SPRING & JAXB
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.
Enterprise Java Beans 3.0 Cours INF Bases de Données Hiver 2005, groupe 10 Stefan MARTINESCU.
 Syntaxe du langage PHP
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Présentation du framework JSF (Java Server Faces) dans le modèle événementiel MVCII
Struts.
 Formulaires HTML : traiter les entrées utilisateur
1 PHP 5 Notions fondamentales (niveau 1 – cours #2) Formation continue – Cégep de Sainte-Foy.
1 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB ARCHITECTURE WEB – COURS III
Initiation au web dynamique Licence Professionnelle.
Les Servlets Présentation Cycle de vie Principe de fonctionnement
Introduction à PHP TOURNADRE Guillaume - Informatique Réseaux URL :
Serveurs Web à contenu dynamique Emmanuel Cecchet INRIA Rhône-Alpes, Projet Sardes Rice University, Systems lab
Java - Servlet et JSP Servlets JSP (Java Server Pages) Tomcat
Les Java Server Pages Dans ce chapitre, nous allons :
IFT 6800 Atelier en Technologies d’information Chapitre 5 Introduction aux Servelets & JSP.
Parquet Geoffrey 3 ARIL EXIA.CESI ARRAS. Présentation du MLD Présentation de la persistance Présentation récapitulatif du projet JSP/SERVLET MVC Cycle.
Transcription de la présentation:

JSTL JSP Standard Tag Library Par: Bendjaballah Billel Mehdi (Billelmehdi@yahoo.com) Master 2 pro GI – option SRR 2004-2005

Sommaire Introduction Servlets et JSP Tag Library avec JSP JSTL Expression Language: EL Exemples J S T L

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 d’applications 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 J S T L

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("<html><head><title>Hello</title></head>"); out.println("<body>Hello Servlet Test</body></html>"); } J S T L

JSP Création de contenu web dynamique simplifiée avec JSP Quelques notions sur JSP Éléments de script: Scriplets <% code java %> Déclarations <%! Déclarations %> Expressions <%= expression %> Syntaxe XML <jsp:forward page="forward.jsp" /> <jsp:include page="result.jsp" /> Directives <%@page import="java.util.*"  %> <%@taglib prefix="c" uri="WEB-INF/tld/core.tld" %> J S T L

Servlets et JSP Il est Possible de faire coopérer des Servlets avec les JSP JSP pour l’affichage = 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 JSP (view) Servlets (Control) Model (BL) J S T L

Tag Library TLD Introduites avec la version JSP 1.1 Avantages Étendre les balises JSP standards Balises spécifiques à un cas d’usage Réduire l’utilisation 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 J S T L

Tag Library Exemple Hello 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; J S T L

Tag Library Exemple Hello World Le descripteur hello.tld <?xml version="1.0" ?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglib_1_1.dtd"> <taglib> <tlibversion>1.0</tlibversion> <jspversion>1.2</jspversion> <!-- Hello tag --> <tag> <name>hello</name> <tagclass>basic.Hello</tagclass> <bodycontent>empty</bodycontent> <info> Tag that Print Hello World </info> </tag> </taglib> J S T L

Tag Library Exemple Hello World Utilisation Dans le web.xml Dans la page JSP <web-app> <taglib> <taglib-uri> http://www.ecom.com/taglibs/utilitytags </taglib-uri> <taglib-location> /WEB-INF/tld/utilitytags.tld </taglib-location> </taglib> </web-app> <%@ taglib uri="http://www.ecom.com/taglibs/utilitytags" prefix="h" %> . . . <h:hello/> J S T L

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. J S T L

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 Deux version: une pour JSTL et l’autre pour JSP 1.3 En JSTL il est utilisé uniquement dans la valeur d’un attribut: <prefix:tag attr1="${ expr }" /> Il est invoqué exclusivement via la syntaxe ${ expr } J S T L

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 J S T L

EL: Expression Language Opérateurs Opérateurs relationnels (== != < > <= >=), arithmétiques (+ - * / %) et logiques (&& || !) L’opérateur [ ] pour accéder au objets de type Map, Array et List Ex: param["p1"] param.get("p1") J S T L

JSTL core tag library Fonction de base Fonction de teste Fonction itérative SQL XML J S T L

JSTL core tag library Fonctions de base Affichage Affectation <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){} %> J S T L

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" %> <% } %> J S T L

JSTL core tag library 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() %> <% } %> J S T L

JSTL core tag library Les itérations avec la boucle for/while forEach <c:forEach var=”user” items=”sessionScope.members” [begin] [end] [step]> <c:out value="nom: ${user.name}" /> </c:forEach> J S T L

JSTL core tag library SQL Faire des requêtes Accès au résultat simplifié Faire des mises à jour Faire des transactions J S T L

JSTL SQL Data source est de type Javax.sql.DataSource <sql:query var="customers" dataSource="${dataSource}"> SELECT * FROM customers WHERE country = ’Algeria’ ORDER BY lastname </sql:query> <table> <c:forEach var="row" items="${customers.rows}"> <tr> <td><c:out value="${row.lastName}"/></td> <td><c:out value="${row.firstName}"/></td> <td><c:out value="${row.address}"/></td> </tr> </c:forEach> </table> J S T L

JSTL SQL Data source est de type Javax.sql.DataSource <%@page import="java.sql.*,javax.sql.*" %> <% Connection con = dataSource.getConnection; Statement stm = con.createStatement(); ResultSet customers = stm.executeQuery("SELECT * FROM customers WHERE country = ’Algeria’ ORDER BY lastname"); %> <table> <% while(customers.next()){ %> <tr> <td><%= customers.getString("lastName") %></td> </tr> <% } %> </table> J S T L

JSTL SQL Les transactions <sql:transaction [dataSource=”dataSource”] [isolation=isolationLevel]> <sql:query> and <sql:update> statements </sql:transaction> isolationLevel ::= "read_committed" | "read_uncommitted" | "repeatable_read" | "serializable" J S T L

JSTL XML <x:parse> parse un document XML par sa DTD <x:out> Évalue une expression Xpath et affiche le résultat <x:transform> applique les transformations d’une feuille de style XSLT sur un document XML J S T L

JSTL lookup EJB Tag Définition d’un 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. <%@page import="javax.naming.*,java.rmi.*,java.ejb.*" %> <%@taglib prefix="ejb" uri="" %> <% Context c = new InitialContext(); Object obj = c.lookup("java:comp/env/ejb/Admin"); EJBHome home = PortableRemoteObject.narrow(obj,EJBHome.class); %> J S T L

JSTL lookup EJB Tag Entrée: nom JNDI de l’EJB + nom de la class Home Sortie: Objet de type EJBHome sauvegardé dans session <ejb:lookup var="varName" ejbname="JndiName" homename="HomeClassName" /> J S T L

JSTL lookup EJB Tag : EJBLookupTag.java public int doStartTag() throws JspException { Context c; try { c = new InitialContext(); Object obj = c.lookup("java:comp/env/ejb/"+ejbname); home = (EJBHome) PortableRemoteObject.narrow(obj,homename); if(home == null) throw new JspException("[EJBLookupTag]Unable 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); return EVAL_PAGE; J S T L

JSTL lookup EJB Tag: ejb.tld <taglib> …. <tag> <name>lookup</name> <tag-class>com.ecom.jstl.EJBLookupTag</tag-class> <body-content>EMPTY</body-content> <attribute> <name>var</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> <name>ejbname</name> <rtexprvalue>true</rtexprvalue> <name>homename</name> </tag> </taglib> J S T L

JSTL lookup EJB Tag : web.xml et index.jsp <web-app> <taglib> <taglib-uri>/jstl-ejb-taglib</taglib-uri> <taglib-location>/WEB-INF/ejb.tld</taglib-location> </taglib> </web-app> <@taglib prfix="ejb" uri="/jstl-ejb-taglib" %> . . . <ejb:lookup var="admin" ejbname="Admin" homename="AdminHome" /> J S T L

JSTL Questions? Questions? J S T L

JSTL Demo La démo J S T L