JSP : Java Server Page Jean-Jacques LE COZ. Plan Technologie Syntaxe Template Directives Déclarations Objets Implicites Expressions Scriptlets Actions.

Slides:



Advertisements
Présentations similaires
JEE 5 - JSF F.Pfister 2 institut eerie Les technologies du web Servlets JSP MVC Model 1 : servlets + JSP MVC Model.
Advertisements

Transformation de documents XML
Exposé de Système - Informatique et Réseau
Programmation Web Les JSP.
Cours 5.3 : XML et les architectures N-tiers – Tier Présentation
Cours 6 : XML et les architectures N-tiers – Tier Applicatif

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.
JSP 2 Crash Course Michel Buffa UNSA
Introduction aux Web Services Partie 1. Technologies HTML-XML
Cours n°3 Les formulaires
LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet
Struts 1 & 2 Tlohi ibtissam Tabit boutaina Ilias bouras
JAVASERVER FACES Un framework Java pour le développement Web.
SERVLETS PRESENTATION
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
ASP.NET Par: Hugo St-Louis. C ARACTÉRISTIQUES A SP. NET Évolution, successeur plus flexible quASP (Active Server Pages). Pages web dynamiques permettant.
Composants web (web tiers)
JSTL JSP Standard Tag Library
JSP (Java Server Pages)
1 CSI 2532 Lab6 Application Web et DB Février 27, 2012.
Adaptée du cours de Richard Grin
Chapitre 3 Les bibliothèques de balises JSP et la JSTL
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
PHP 1° PARTIE : LES BASES © BTS IRIS 2002 [tv] Présentation Historique
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.
Présentation du framework JSF (Java Server Faces) dans le modèle événementiel MVCII
Struts.
1 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB ARCHITECTURE WEB – COURS III
Les Servlets Présentation Cycle de vie Principe de fonctionnement
Serveurs Web à contenu dynamique Emmanuel Cecchet INRIA Rhône-Alpes, Projet Sardes Rice University, Systems lab
Les Java Server Pages Dans ce chapitre, nous allons :
{ Java Server Pages Par Billy et Mike.  Introduction  Qu’est-ce que JSP?  Pourquoi utiliser JSP?  Développement  Balises  Servlets  Conclusion.
JI Les systèmes d’autorisation et d’authentification dans AMI Fabian Lambert.
Création d’un site WEB 1 – Un site WEB c’est quoi ? 2 – Questions à se poser avant la construction d’un site WEB 3 – Principes de fonctionnement d’un site.
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.
Mediator 9 - Un outil de développement multimédia 3AC Techno/Informatique.
Design Patterns.  SIDAOUI Abdelfahem  
Développement d’application avec base de données Semaine 3 : Modifications avec Entité Framework Automne 2015.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 5 Support de cours rédigé par Bernard COFFIN Université.
1 Les bases de données Séance 7 Les fonctions avancées : Opérateurs ensemblistes, Sous-requêtes et transactions.
Développement d’application avec base de données Semaine 8 : WPF avec Entité Framework Automne 2015.
INSTITUT UNIVERSITAIRE DE TECHNOLOGIE -B.P.2235 – Avenue Aristide Briand – Montluçon Cedex Tél – Fax –
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 1 Support de cours rédigé par Bernard COFFIN Université.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 6 Support de cours rédigé par Bernard COFFIN Université.
FACTORY systemes Module 5 Page 5-1 Les outils clients Wonderware FORMATION InSQL 7.0.
Initiation aux bases de données et à la programmation événementielle Outil de création des tables Support de TD rédigé par Bernard COFFIN Université Paris.
La création des données d’exemplaire pour un exemplarisateur Sudoc.
Spécialisation covariante cours et TP. Plan  Introduction  Rappels théoriques  Définition de la covariance  Présentation du modèle servant d'exemple.
Les méthodes de tests Les grands principes pour réaliser des tests efficaces.
1 Adaptation Structurelle de Composants Logiciels Stage de DEA informatique effectué à L’ENSM-Douai Encadré par Mr. Abdelhak SERIAI & Mr. Mourad OUSSALAH.
UML : méthode Processus. Introduction(1) ● Cycles ● Spécification par cas d'utilisation ● Identifier les besoins ● Analyse par cas d'utilisation ● Affiner.
Introduction à la Programmation Orientée Objet H.GATI.
Principes de l'orienté objet Jean-Jacques LE COZ.
Human Task Service (2008) Oscar Barrios et François Charoy Human Task Service Service de tâches dans un système de gestion de workflow Oscar Barrios
Informatique 1A Langage C 6 ème séance 1. Objectifs de la séance 6  Allocation dynamique de mémoire  Application à la création de tableaux 2.
IFT359 – Programmation fonctionnelle Thème #8 Création de nouvelles formes syntaxiques 1.
Cours de Langage C Les structures
Prochaine évolution de nos modèles bibliographiques : FRBR-LRM Pat Riva Présidente, FRBR Consolidation Editorial Group Séminaire.
Introduction Depuis le début des sites web les urls sont utilisé pour la navigation. Avec l’arrivée des bases de données, les urls ont prit de l’importance.
FORMATIONENT/SVT Saint Orens Vendredi 15 novembre 2013.
INSCRIPTIONS SPORTIVES
1 Initiation aux bases de données et à la programmation événementielle Construction d’un état Support de TD rédigé par Bernard COFFIN Université Paris.
ONEMA/DCIEGPA du 17/10/ Interopérabilité Web de la toile Eaufrance GVI mai 2015.
Persistance en bases de données O.Legrand G. Seront.
Architecture J2EE Web Jean-Jacques LE COZ. J2EE Web Container JSP Page Servlet J ava 2 Standard Edition APIs EJB Container EJB JDBCJMS JNDI JTA JavaMail.
Développement d’application avec base de données Semaine 1 : Présentation d’Entity Framework Automne 2015.
Persistance des données O.Legrand. Persistance developer.android.com/guide/topics/data/data-storage.htmll Plusieurs moyens sur le mobile: –Système de.
Transcription de la présentation:

JSP : Java Server Page Jean-Jacques LE COZ

Plan Technologie Syntaxe Template Directives Déclarations Objets Implicites Expressions Scriptlets Actions

Technologie

JSP technologie Création dynamique de contenus Côté serveur La technologie combine Java Servlet HTML XML JavaBeans

J2EE Web Container JSP Page Servlet J ava 2 Standard Edition APIs EJB Container EJB JDBCJMS JNDI JTA JavaMail JAF RMI-IIOP

Du point de vue HTML Extension de HTML Code Java embarqué. Le code Java génère du contenu dynamique. Le contenu est intégré dans du HTML/XML.

Du point de vue Java Une autre façon d'écrire des servlets Séparation du contenu de la présentation. L'environnement d'exécution compile le code de la page JSP dynamiquement.

Contenus statiques HTML HyperText Markup Language SVG Scalable Vector Graphics WML Wireless Markup Language XML Extensible Markup Language

Accéder aux pages statiques Navigateur Uniform Resource Locator (URL) Serveur Web index.html HTTP request HTTP response (contenu de index.html) 1 2 3

Contenus dynamiques Balises typiques JSP Directives, déclarations, expressions, scripts java <%!, <%=, <% Commentaires Balises XML JSP Gestion des JavaBean <jsp:useBean, <jsp:setProperty,...

Contenus dynamiques Balises JTL Standard (JSTL) Pseudo langage avec structures de contrôle <c:forEach, <c:when, <c:if,... Personnalisé (JCTL) Référence à des librairies <f:uneFonction,.... Langage EL (Expression Language) Accès aux attributs des objets (${ objet.attribut } )

Accéder aux pages dynamiques Navigateur nom : dupont valider Serveur Web index.html login.jsp exécution de login.jsp output.html HTTP response (contenu de output.html) HTTP request (''dupont'', login.jsp)

Langage EL et EL unifié

Langage EL Simplification des expressions JSP Permet Accès aux objets implicites Accès aux classes Java Facilite la gestion des collections Syntaxe ${ expressionEL } Mécanisme d'évaluation immédiat Quand la page est transformée en flux HTML Read-only

Langage EL version JSP2.0 Unified Expression Language Ajouté à la spécificationJavaServer Pages Standard Tag Library (JSTL) Pour rendre le langage EL compatible avec celui de JSF Pour permettre en plus du mode immédiat le mode diférré Read-Write

Unified Expression Language Possibilités Évaluation diférrée des expressions Durant le cycle de vie Supporte les expressions qui peuvent Modifier des valeurs Invoquer des méthodes Utilisation des balises JSTL pour les itérations avec les expressions diférrées

Évaluation diférrée (1) Exemple avec une expression JSF: Lors du chargement de la page Évaluation immédiate Lors de la soummission de la saisie Évaluation diférrée durant les phases JSF

Évaluation diférrée (2) Phases d 'évaluation de l'exemple apply request value La valeur saisie est récupérée de la requête process validation La valeur saisie est validée update model La valeur saisie met à jour le modèle, ici le nom de l'étudiant

Types d'expression (1) Expression de valeur Left expression Lecture-écriture Syntaxe : #{expression diférrée} Right expression Lecture Syntaxe : ${expression immédiate}

Types d'expression (2) Expression de méthode Permet d'invoquer une méthode Syntaxe : #{nomObjet.nomMéthode} Exemple avec JSF <prefix:inputText id="id" value="#{etudiant.id}" validator="#{student.validerId}"/> Le TLD qui définit la balise inputText spécifie la signature de la méthode La méthode validerId est invoquée durant la phase process validation du cycle de vie

Mécanisme extensible Concept de ELResolver Permet de déterminer si les expressions sont résolues par JSP ou JSF Classe générique ELResolver Un ensemble de ELResolver est fourni Mécanisme d'extension Il est possible d'écrire son propre Resolver Écrire le Resolver Enregistrer le Resolver auprès de l'application Utiliser les expressions

Une simple page JSP BonjourLeMonde.jsp Bonjour Le Monde JSP Exemple Bonjour Le Monde.

Une page JSP dynamique BonjourLeMondeBIS.jsp Bonjour Le Monde JSP Exemple Bonjour Le Monde. La date est :. Note : c'est la date du serveur qui s'affiche ici, pas celle du client.

Une autre syntaxe BonjourLeMondeTER.jsp Bonjour Le Monde JSP Exemple Bonjour Le Monde. La date est : new java.util.Date() La syntaxe XML est plus claire mais ne change rien au code produit lors de la compilation et rien au résultat.

Les pages JSP sont des servlets Techniquement une page JSP est compilée en une servlet : La page JSP est traduite en code source Java d'une servlet. Le code source de la servlet est ensuite compilée. Réalisé une seule fois lors de la première invocation.

JSP : cycle de vie navigateur JSP container JSP pages JSP page contenu statique HTTP request HTTP response (Tomcat) Traduite en une servlet et compilée servlet exécution de la servlet output

Déploiement Préférable de déployer sous une forme typique de fichier JAR. Fichiers WAR (Web App Repository). A partir de la version 2.2 des spécifications. Contiennent les règles de déploiement : Correspondance entre URIs (Uniform Resource Identifiers) et les ressources. Permet de déployer une application avec un seul fichier binaire sans les sources.

Rappels sur les archives WAR Étape 1: $>mkdir application_web $>mkdir application_web/src $>mkdir -p application_web/WEB-INF/classes Étape 2: $>mv *.html application_web/ Étape 3: $>mv web.xml application_web/WEB-INF/ Étape 4: $>mv *.java application_web/src/ $>mv *.jsp application_web/ Étape 5: $>mv *.class application_web/WEB-INF/classes/ Étape 6: $>cd application_web $>jar -cvfM applicationWeb.war

Interface JSP Interface JspPage Spécialise la classe Servlet. Contrat entre la page JSP et le serveur. Implémentation du protocole HttpJspPage. Méthode _jspService.

JSP syntaxe

Éléments (1) Contenu Template Tout ce qui, dans la page, n'est pas du JSP. Directives Les instructions pour préciser comment construire la page.

Éléments (2) Éléments de script Déclarations, expressions et scriptlets. Actions Fonctionnalités offertes à partir de balises spéciales XML. Le code de ces fonctionnalités est masqué.

Résumé

Template

Contenu « Template » Template content Tout ce qui n'est pas du JSP Template text HTML Non transformé Passé tel quel au flux de sortie

Exemple de template Bonjour Le Monde Bonjour Le Monde. La date est.

Commentaires Trois façons d'introduire un commentaire Commentaire HTML Commentaire JSP Commentaire dans un script

Commentaire HTML --> Bonjour Le Monde Exemple Bonjour Le Monde.

Commentaire JSP Bonjour Le MondeExemple Bonjour Le Monde.

Commentaire de script /* date est une nouvelle variable, initialisée lors de son instantiation. Elle peut aussi être utilisée de la façon suivante : out.println(''instanciée à ''+ date); // affiche la date après le texte */ Date date = new Date(); Bonjour Le Monde Exemple Bonjour Le Monde. Cette page a été chargée en mémoire à. La date est

Règles de protection

Exemple de page JSP Bonjour Le Monde Escape Sequences Bonjour Le Monde. La date est. Le temps est calculé par l'expression JSP <%=new Date()%>. Les protections JSP ne fonctionnent pas dans le code HTML. Pourquoi ? Parce que HTML possède ses propres règles. La règle HTML la plus importante est que '<' est codé ainsi "&lt;", '>' est codé comme cela "&gt;", et '&' est codé ainsi "&amp;".

Règles de protection HTML Liste officielle des caractères d'échappement HTML :

Directives

Directives JSP Informations suplémentaires pour le serveur : Imports de paquetage, Include de fichiers, Accès aux librairies de « custom tag » Syntaxe

Résumé des directives

Exemple de directive : page ou Exemple : Bonjour Le Monde JSP Exemple Bonjour Le Monde. La date est.

Attributs de la directive : page

Directive : include Introduit le contenu d'un fichier dans la page JSP. Lors de la translation ou compilation. Comme un #include en c/c++. Différent de l'action include. Opère au moment de la requête. Syntaxe

Exemple de directive : include Bonjour Le Monde Bonjour Le Monde.

Exemple de construction

Équivalences entre écritures Il n'y a pas toujours égalité entre écritures Exemple La directive include Mécanisme de mise en cache de la ressource Statique Attribut flush obligatoire en jsp1.1 pas en jsp1.2 Dynamique

Directive : taglib Possibilité de créer ses propres balises XML et de les utiliser dans une page JSP. Chaque taglib fait référence à une librairie c'est à dire à une implémentation Java. Permet de découpler la présentation de la logique applicative contenue dans les taglib.

Exemple d'utilisation de taglib Bonjour Le Monde Bonjour Le Monde. La date est.

Mécanisme des taglib JSPweb.xmltags.tld Tag Handler (classe java)...

Déclarations

Déclaration JSP Permet de déclarer des données et des fonctions. Utilisées dans la page JSP. Syntaxe déclarations java

Exemple de déclaration jsp:directive.page import="java.util.Date"/> private static String loadTime = new Date().toString(); private static String getLoadTime() { return loadTime; } private static String getCurrentTime() { return new Date().toString(); } Bonjour Le Monde Bonjour Le Monde. Cette page a été chargée en mémoire à. La date est

Deux déclarations particulières Méthodes optionnelles Méthode: public void jspInit() Méthode: public void jspDestroy() Méthode jspInit() Appelée une seule fois lors du chargement de la page JSP. Méthode jspDestroy() Appelée une seule fois lors du déchargement.

Exemple avec jspInit() et jspDestroy() private static DateFormat formateur; private static String loadTime; private static String getLoadTime() { return loadTime; } private static String getCurrentTime() { return toGMTString(new Date()); } private static String toGMTString(Date date) { return formateur.format(date); } public void jspInit() { formateur = new SimpleDateFormat("d MMM yyyy HH:mm:ss 'GMT'", Locale.US); formateur.setTimeZone(TimeZone.getTimeZone("GMT")); loadTime = toGMTString(new Date()); } public void jspDestroy() { formateur = null; } Bonjour Le Monde Bonjour Le Monde. Cette page a été chargée en mémoire à. La date est

Objets implicites

Il y a un certain nombre d'objets prédéfinis par l'architecture JSP. Ils permettent l'accès à l'environnement d'exécution. Ils font partie de l'API servlet Les expressions et scriplets y ont accès.

Tableau des objets implicites

Les objets implicites (1) L'objet « out » JspWriter émule java.io.PrintWriter. JspWriter supporte java.io.BufferedWriter. Exception par java.io.IOException. L'objet « request » Permet de récupérer des détails sur la requête et le client. Méthode request.getParameter().

Les objets implicites (2) L'objet «response» Permet l'accès au flux de sortie. Il permet de positionner les entêtes (header) Cookies, content type, cache control, refresh, redirection,... L'objet «session» Permet de gérer une session avec le client.

Les objets implicites (3) L'objet «pageContext» Permet l'accès à l'environnement JSP et aux beans. Permet de déterminer l'acquisition de l'objet out. Fournit l'interface pour “include” et “forward”. L'objet «config» Permet l'accès au ServletContext.

Les objets implicites (4) L'objet «page» Représente la page courante exécutant la requête. Les méthodes de l'interface sont : void jspInit();// allows user action when initialized void jspDestroy();// allows user action when destroyed public void _jspService(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException; Note : la méthode _jspService() est générée alors que les deux autres méthodes peuvent être déclarées.

Les objets implicites (5) L'objet « application » Instance de ServletContext. Permet d'obtenir le RequestDispatcher. L'objet «exception» Présent uniquement dans une page d'erreur.

Expressions

Les expressions Sont des instructions java dont le résultat est une valeur. Évaluées lors de l'exécution. Converties en String. Écrites dans le flux de sortie (HTML, XML). Syntaxe instruction java

Scriptlets

Les scriptlets Sont des instructions java. Implémentation de la logique applicative Contrôles algorithmiques Alternatives, itérations. Syntaxe instruction java

Exemple de page JSP avec scriptlets String userAgent = (String) request.getHeader("user-agent"); JSP Scriptlet Exemple if (userAgent.indexOf("MSIE") != -1) { Vous utilisez Internet Microsoft Explorer. } else { Vous n'utilisez pas Internet Microsoft Explorer. Vous utilisez }

Défaut des scriptlets Couplage fort entre le code java et le code HTML. Non respect du patron MVC Séparation de la logique applicative de la logique de présentation. Remplacer les « scriptlets » par des « custom tag ». Car beaucoup de concepteurs graphique web ne sont pas des programmeurs.

Actions

Les actions Plus haut niveau de fonctionnalité que : Déclarations, expressions et scriptlets. Indépendantes de tout langage script. Syntaxe Que la syntaxe XML : <jsp:

Catégories d'action Trois catégories d'actions standards Pour utiliser les composants JavaBean. Pour contrôler le forwarding/including. Pour préparer HTML pour les plug-in java. Extensible par les « taglib »

Page JSP et JavaBeans Intégration des JavaBeans et de HTML.

JavaBean Une classe java Peut implémenter Serializable. Encapsule un état. Propose une interface avec : Des méthodes d'accès get et set. Méthodes Type getDonnéeMembre(). Méthodes void setDonnéeMembre().

<jsp:useBean Si le bean n'est pas trouvé alors il est instancié. L'attribut scope indique la portée du bean. Portées : page, request, session, application. Syntaxe corps

Portée du bean

Spécifications Spécification: class='' '' Classe du bean. Spécification: class='' '' et type='' '' Type et classe du bean. Spécification: type='''' et beanName='' '' Le type à utiliser dans la page. Nom d'un bean existant. Spécification: type='''' Le type à utiliser dans la page.

<jsp:setProperty Valorise les données membres du bean. Syntaxe Exemple :...

Expressions de setProperty (1) Expression : property=''*'' Tous les membres données du bean sont valorisés par les ''request parameter''. Expression : property=''nom'' Valorise uniquement le membre donnée.

Expressions de setProperty (2) Expression : property=''nom'' param=''nom'' Valorise le membre donnée par la valeur issue du paramètre. Expression : property=''nom'' value=''valeur'' Valorise le membre donnée par la valeur. La valeur peut être une expression JSP.

<jsp:getProperty Récupération des valeurs des données membres du bean. Syntaxe <jsp:getProperty name=''nom'' property=''nom'' La valeur est convertie en String. Même comportement que pour une expression. (

Exemple de JSP avec bean (1) // Classe locale de bean static public class BeanLocal { private String valeur; public String getValeur() { return valeur;} public void setValeur(String s) { valeur = s; } }

Exemple de JSP avec bean (2) Bonjour Le Monde Hello Entrer un nom: <INPUT TYPE="text" SIZE="32" NAME="valeur" VALUE=" ">

Les autres actions Action jsp:include Insertion de la ressource dans le contenu de la page en include. Action jsp:forward Insertion de la ressource dans le contenu de la page en forward. Action jsp:param Passage d'un paramètre à la ressource.

<jsp:include Insertion d'une autre ressource dans le flux de sortie. Statique : HTML Dynamique : page JSP, servlet, script CGI Syntaxe L'option flush est optionnelle

<jsp:forward Transfert de la request vers une autre ressource. Le contenu de la ressource appelée se substitue à celui de l'appelant. Syntaxe

<jsp:param Fournit des paramètres à la ressource qui est incluse (include) ou appelée (forward). Syntaxe

Exemple de page JSP head.jsp <%=(request.getParameter("html-title") != null) ? request.getParameter("html-title") : "UNTITLED"%>

<jsp:plugin Permet la mise à jour de la JVM supportée par le navigateur du client. Syntaxe

Langage EL

Bibliographie Livres Professional JSP Éditeur : Wrox Press - Auteur : Wrox Author Team JSP Professionnel Éditeur : Eyrolles - Auteurs : K. Avedal, D. Ayers Java Servlet and JSP Cookbook Éditeur : O'Reilly – Auteur Bruce W. Perry Sites Web