Les Java Server Pages Dans ce chapitre, nous allons :

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

Le struts validator – framework de validation
Internet et le client- serveur Licence Pro IE Cours Internet / Intranet Le Web HTML Protocoles Le client universel Contenus dynamiques.
Conception de Site Webs dynamiques Cours 5
Algorithmes et structures de données avancées Partie Conception de Sites Web dynamiques Cours 9 Patrick Reuter.
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
51 Les technologies XML Cours 7 : Utilisations dXML Janvier Version 1.0 -

CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV EJB Entité Module Java Expert.
Environnement Premier projet.
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.
JSP 2 Crash Course Michel Buffa UNSA
Introduction aux Session Beans
Connexion Web et Bases de Données : Technique canevas de fichiers HTML
Oct.-2000DESS IIDEE © B. BAH 1 ASP Caractéristiques dun fichier ASP Son extension : « *.asp » La balise: Son indépendance vis à vis de toute plate–forme,
LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet
2006/2007Denis Cabasson – Programmation Web Cours de programmation web ENSAE
JavaBeans Réalise par: EL KHADRAOUY TARIK AOUTIL SAFOWAN.
Struts 1 & 2 Tlohi ibtissam Tabit boutaina Ilias bouras
JAVASERVER FACES Un framework Java pour le développement Web.
SERVLETS PRESENTATION
Développement Rapide dApplications Web avec.NET « Mon premier site »
Projet JAVA EE Approfondi
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.
Introduction au langage PHP Réfs : Chap 3 p 49. Présentation PHP (Hypertext PreProcessor) est un langage de développement Web créé en 1994 par Rasmus.
Composants web (web tiers)
Création d'un projet Web avec Netbeans
Le langage ASP Les formulaires avec Request. Les formulaires sont employés pour transmettre des informations saisies par un client à une application Web.
Web dynamique PhP + MySQL AYARI Mejdi 2006
PhP-MySQL Pagora 2012/2013 CTD 1 - Presentation de moi ^^
JSP (Java Server Pages)
1 CSI 2532 Lab6 Application Web et DB Février 27, 2012.
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Document élaboré à Centrale Paris par Pascal Morenton LES TECHNOLOGIES DU WEB 1. LES PHASES D UN DEPLOIEMENT DE RESEAUX 2. LE LANGAGE HTML 3. LE LANGAGE.
Adaptée du cours de Richard Grin
Chapitre 3 Les bibliothèques de balises JSP et la JSTL
J2EE vs .NET Réaliser par : SEIF ENNACER BADRA && CHETOUI RIM.
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
Internet et le client- serveur Licence Pro IE Cours Internet / Intranet Le Web HTML Protocoles Le client universel Contenus dynamiques.
Module I-C3 : Applications Web IUT R&T 2e année
JavaScript Nécessaire Web.
© 1 Taglibs Applications Struts Taglibs. © 2 Applications Struts Les Tags Libraries Struts Bean : Accès aux JavaBean, aux ressources Html : Gestion des.
Chapitre 2 Développement Web avec les technologies JSP/Servlets
JavaScript.
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.
T ECHNOLOGIES WEB CHAPITRE IV : L E LANGAGE PHP 1 Mme Amani JARRAYA & Mohamed MOHSEN.
 Syntaxe du langage PHP
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Tutorat en bio-informatique
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.
 Formulaires HTML : traiter les entrées utilisateur
Initiation au JavaScript
1 / / 01 / 2003 Laurent GRANIE & Franck LEGENDRE – MIAGE 3ème année - ARCHITECTURE WEB ARCHITECTURE WEB – COURS III
Développer des applications WEB avec Struts
Initiation au web dynamique Licence Professionnelle.
Les Servlets Présentation Cycle de vie Principe de fonctionnement
CPI/BTS 2 Programmation Web Les sites dynamiques Prog Web CPI/BTS2 – M. Dravet – 02/10/2003 Dernière modification: 02/10/2003.
IFT 6800 Atelier en Technologies d’information Chapitre 5 Introduction aux Servelets & JSP.
{ Java Server Pages Par Billy et Mike.  Introduction  Qu’est-ce que JSP?  Pourquoi utiliser JSP?  Développement  Balises  Servlets  Conclusion.
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.
APP-TSWD Apprentissage Par Problèmes Techniques des Sites Web Dynamiques Licence Professionnelle FNEPI Valérie Bellynck, Benjamin Brichet-Billet, Mazen.
DWR Jean-Jacques LE COZ. Introduction Projet DWR Framework AJAX Projet Open Source commencé en 2004 Licence GPL (Apache Software License v2) Sponsorisé.
Transcription de la présentation:

Les Java Server Pages Dans ce chapitre, nous allons : Présenter l’architecture des JSP Comprendre la syntaxe JSP Développer un exemple de JSP

Présentation des JSP Présentation des JSP Génération de pages dynamiques orientée sur une logique de présentation Ce sont des scripts interprétés côté serveur contenant du code Java Insèrent de la logique de traitement dans des pages de présentation (HTML, WML, XML) Concurrent aux technologies : ASP PHP Les JSP sont basées sur une logique de présentation. Une page JSP est une page écrite dans le langage cible (HTML, mais aussi WML, XML ou d'autres dérivés du XML) et qui intègre quelques appels à du code Java. Ce code Java est exécuté sur le serveur et le résultat des appels vient compléter la construction de la page.

Exemple de fichier JSP Présentation des JSP Une page JSP est écrite dans le langage cible de publication (HTML, …) Elle contient des appels à du code Java <HTML> <HEAD> <TITLE> Exemple de page JSP </TITLE> </HEAD> <BODY> Un nombre aléatoire est : <%= Math.random() %> </BODY> </HTML> Dans cet exemple, il faut remarquer l'intégration du code Java au sein de la mise en page (en HTML).

Fonctionnement Présentation des JSP Les pages JSP sont exécutées par un moteur de JSP couplé au serveur Web Elles accèdent à du code Java qui se charge de la logique et de l'accès aux données Fonctionnement : La requête d’un client est envoyée vers le serveur Web (HTTP) qui fonctionne en étroite collaboration avec le moteur de JSP. La page JSP est compilée et le code qui s’y trouve est interprété au fil de la page. La page JSP peut par exemple manipuler des beans. C’est le cas dans l’exemple présenté ci-dessus. Les objets manipulés se trouvent sur le serveur et peuvent donc dialoguer avec d’autres objets de la même manière qu’un programme java classique (ici dialogue avec une base de données). Après exécution, la réponse du serveur est renvoyée au client via le serveur Web. Parmi les moteurs de JSP les plus performants, on peut noter celui du serveur d ’application Orion (http://www.orionserver.com) le serveur Resin (http://www.caucho.com) Tomcat est le moteur de JSP déclaré comme implémentation de référence par Sun : http://jakarta.apache.org/tomcat/index.html

Compilation des JSP Modèle d'exécution : Présentation des JSP Modèle d'exécution : Chaque page JSP est convertie en servlet Lorsque la page JSP a déjà été compilée et exécutée une fois, la servlet reste en mémoire, elle est directement exécutée L'un des avantages de cette technologie est de pouvoir redéployer "à chaud" des pages JSP sur un serveur Web. Lors d'un appel à une page, le moteur de JSP vérifie la date de dernière modification de cette page, si celle-ci est plus récente que sa version compilée (la servlet qui correspond), la page JSP est alors recompilée avant d'être exécutée.

Format des Tags JSP Les tags JSP L'écriture de pages JSP se base sur l'utilisation de balises (tags) prédéfinies Il existe deux formats pour les tags JSP JSP (Short-hand) Directives Déclaration Expression Scriptlet XML Actions L'écriture de pages JSP repose sur l'utilisation de tags précis définis dans le standard. Le concept JSP repose également sur une API ouverte permettant de définir des tags spécifiques créés au besoin par le développeur : les tag libraries.

Expressions Les tags JSP Permettent d’intégrer des valeurs directement dans le code HTML Utilisées pour afficher une chaîne de caractères, typiquement une valeur de retour Exemple : <P>Prix de l’article : <%= monArticle.getPrice() %></P> <%= value %> Toute variable utilisée dans une expression est automatiquement transformée en chaîne de caractères et intégrée dans le flux HTML produit. L'équivalent de l'exemple écrit dans une servlet serait : public void service( HttpServletRequest request, HttpServletResponse) { … out.println ("<P>Prix de l'article :" + monArticle.getPrice() + "</P>"); } Le code pourrait se trouver aussi dans la méthode doGet() ou doPost() à la place de service(). Equivalent à l’utilisation du out.println() dans la méthode service() d’une servlet

Scriptlets Permettent d’insérer du code Java Les tags JSP Permettent d’insérer du code Java Elles ont accès aux variables et aux composants déclarés dans la page Exemple : <P> <% if (true) { %> Ce texte est affiché <% } else { %> Celui-ci n'est jamais pris en compte <% } %> </P> <% code java %> L'équivalent de l'exemple écrit dans une servlet serait : public void service( HttpServletRequest request, HttpServletResponse) { … out.println ("<P>"); if (true) { out.println ("Ce texte est affiché"); } else { out.println ("Celui-ci n'est jamais pris en compte"); } out.println ("</P>"); Equivalent à du code simple dans la méthode service() d’une servlet

Déclarations Les tags JSP Utilisées pour déclarer des variables ou des méthodes dans une page Fortement déconseillé ! Exemple : <%! String var1 =“x”; int count = 0; private void increment() { count++; } %> <%! declaration %> La déclaration de membres au sein d'une page JSP n'est pas du tout recommandée. Ce n'est pas le but d'une page de scripts de déclarer des méthodes, elle ne doit contenir que des appels. Les déclarations éventuelles se trouvent dans une servlet, un Bean ou une classe Java. D'autre part, la déclaration d'attributs pose le même problème qu'avec les servlets : ces attributs sont partagés entre tous les threads clients, il peut y avoir des problèmes d'accès concurrents à ces données. Le code localisé dans la page JSP ne doit avoir d'intérêt que pour la présentation. L'équivalent de l'exemple écrit dans une servlet serait : public class maServlet extends HTTPServlet { String var1 = "x"; int count = 0; private void increment { count++; } … Equivalent à une déclaration d'attribut ou d'une méthode dans la classe de la servlet

Directives JSP Permettent de configurer la JSP Les tags JSP Permettent de configurer la JSP Sont souvent placées au début du fichier Exemples : Inclusion statique de fichiers : <%@ include file=“headers/copyright.html” %> Import de classes : <%@ page import=“java.util.*” %> <%@ directive { attribute = “value” } %> L'inclusion est très pratique dans un esprit de modularité et réutilisabilité. En effet, il est ainsi possible de définir sous forme de "composants" indépendants, des pages statiques HTML, des fonctions JavaScript, ou même d'autres pages JSP et d'inclure ces composants dans une page JSP. Attention ! La directive include permet de faire de l'inclusion statique de fichiers dans un fichier composite principal. Le fichier JSP principal est compilé en une servlet avec l'intégration des éléments inclus. Ces éléments eux ne sont pas compilés en servlets. Si ces éléments sont modifiés, le serveur ne le détecte pas forcément et ne recompile donc pas la page JSP principale en servlet. L'équivalent de l'exemple d'import écrit dans une servlet serait : import java.util.* public class maServlet extends HTTPServlet { … } Équivalent à l'écriture des imports de packages et de classes au début du code de la servlet

Directive pour les exceptions Les tags JSP Possibilité d’intercepter toutes les exceptions non catchées Redirection de tous les cas d'erreur vers une page unique Utilisation de la directive page : <%@ page isErrorPage="false" errorPage="errorHandler.jsp" %> Au début de la page errorHandler.jsp, il faut ajouter : <%@ page isErrorPage="true"%> L’ensemble des exceptions peuvent être récupérées par une même page. Le paramètre isErrorPage permet de préciser si la page est celle utilisée pour la gestion des erreurs. Dans le cas où la page est celle qui gère les exceptions, il existe une variable prédéfinie «exception» qui permet d’avoir davantage d’informations sur l’exception qui a été levée.

Liste des directives <%@ page language="java" %> <%@ page extends="package.class" %> <%@ page import= "{ package.class | package.* }, ..." %> <%@ page session="true|false" %> <%@ page buffer="none|8kb|sizekb" %> <%@ page autoFlush="true|false" %> <%@ page isThreadSafe="true|false" %> <%@ page info="text" %> <%@ page errorPage="relativeURL" %> <%@ page isErrorPage="true|false" %> <%@ page contentType="mimeType [ ;charset=characterSet ]" | "text/html ; charset=ISO-8859-1" %> Les tags JSP language="java" : indique le langage utilisé dans les scriptlets. En JSP, le seul langage utilisé est Java. extends="package.class" : indique le nom complet de la classe mère Java dont hérite la classe qui sera compilée à partir de cette page JSP. import= "{ package.class | package.* }, ..." : indique la liste de packages à importer, séparés par des virgules. session="true|false" : indique si oui ou non le client doit avoir une session HTTP pour utiliser la page JSP. Crée une session si nécessaire. buffer="none|8kb|sizekb" : précise la taille du buffer (en Kb) utilisée par l’objet out pour mettre en tampon le flux de sortie envoyé par la page JSP. autoFlush="true|false" : indique si oui ou non le flux de sortie bufferisé doit être automatiquement déversé lorsque le tampon est plein. isThreadSafe="true|false" : indique si oui ou non la gestion des threads est implémentée dans la page JSP, i.e. si le moteur de JSP peut envoyer plusieurs requêtes à la même page JSP simultanément. info="text" : une chaîne de caractéres qui est incorporée dans la page JSP. errorPage="relativeURL" : path vers une page JSP d’erreur vers laquelle sont envoyées les exceptions. isErrorPage="true|false" : indique si oui ou non la page JSP est une page d’erreur. Si la valeur est « true », on peut utiliser l’objet « exception ». contentType="mimeType [ ;charset=characterSet ]" | "text/html;charset=ISO-8859-1" : le type MIME et le character encoding utilisé par la page JSP pour la réponse envoyée au client.

Actions Elles effectuent une tâche prédéfinie Les tags JSP Elles effectuent une tâche prédéfinie Aucun codage en Java n’est nécessaire Elles se caractérisent par une balise standard XML spécifique : useBean setProperty/getProperty include forward Les actions sont des simplifications d'écriture pour la manipulation de composants JavaBean ou pour les interactions avec d'autres pages JSP ou avec des servlets.

Utilisation de Beans useBean : Instancie un Bean sur le serveur Les tags JSP useBean : Instancie un Bean sur le serveur getProperty : Récupère la propriété d’un Bean setProperty : Met à jour la propriété d’un Bean (utilisé pour les formulaires) <jsp:useBean id=“notreBean” scope=“application” class=“com.example.OurBean” /> <jsp:getProperty name="notreBean" property="unAttr"/> useBean permet de récupérer un Bean enregistré dans le scope. S'il n'existe pas, il est alors créé avec le constructeur par défaut du Bean. Dans une action setProperty le champ value peut être renseigné soit par une variable, soit par une expression JSP. Pour les formulaires, l’action <jsp:setProperty name="user" property="*"/> va appeler par introspection les accesseurs correspondant à tous les paramètres du formulaire <jsp:setProperty name="notreBean" property="unAttr" value="uneValeur"/> <jsp:setProperty name="notreBean" property="unAttr" param="unParam"/> <jsp:setProperty name="notreBean" property="*"/>

Actions - Scope Les tags JSP L’action useBean permet de récupérer ou de créer un bean suivant une portée 4 portées différentes : page : objet accessible seulement dans la page où il a été créé request : objet accessible seulement pour les pages qui sont liées à une même requête session : objet accessible par un seul client sur toutes les pages JSP pendant la même session application : objet accessible par tous les clients pendant toute la durée de l’application useBean permet de récupérer un Bean enregistré dans la portée. S'il n'existe pas, il est alors créé. Le cas du scope « request » : il est utilisé dans le cas où plusieurs pages sont appelées pour une même requête, dans le cadre d’include ou de forward de pages par exemple.

Utilisation d'autres ressources Les tags JSP include : Permet d’insérer dynamiquement le contenu d'une autre ressource (servlet, JSP, HTML) forward : délègue le traitement de la requête à une autre ressource le sendRedirect reste possible, mais ce n'est pas une action <jsp:include page="shoppingcart.jsp" /> L’action include permet d’inclure du code en faisant appel à une seconde JSP. Mais contrairement à la directive include, il s'agit ici d'une inclusion dynamique. Les fichiers JSP inclus ne sont que référencés par le fichier JSP principal. Ils sont eux-même compilés en servlets. En fait, la page principale inclus le résultat de l'exécution du composant inclus. Ce qui implique que lors d'une modification de l'un de ces fichiers, la recompilation est effectuée et les modifications sont bien intégrées à la page JSP principale. L’action forward, permet à la page JSP de réaliser des pré-traitements et de déléguer d'autres traitements et la production de la réponse à un deuxième composant. Une page JSP peut également implémenter une redirection comme pour les servlets. En effet, cette redirection se fait par simple appel à la méthode sendRedirect() sur l'objet response. <jsp:forward page="shoppingcart.jsp" />

Variables implicites 9 variables implicites peuvent être utilisées dans les pages JSP : Variables implicites Variable (scope - classe) Méthodes courantes Commentaires request ( request - Sous-classe de javax.servlet. ServletRequest ) getParameter getParameterNamesgetParameterValues Répresente la requête HTTP response (Page – Sous-classe de javax.servlet. ServletResponse) Représente la réponse HTTP Peu utilisé dans les JSP On accède directement à chacun de ces objets. Exemple : <% String maValeur = (String)request.getParameter("monParametre"); %> La référence de la réponse HTTP (response) est peu utilisée dans les JSP puisque le flux est directement géré par le serveur.

Variables implicites pageContext (Page - javax.servlet.jsp.PageContext) findAttribute getAttribute getAttributesScope getAttributeNamesInScope session (Session - javax.servlet.http. HttpSession) getId getAttribute putAttribute getAttributeNames Représente la session utilisateur application (application - javax.servlet. ServletContext) getMimeType getRealPath Représente la Web application

Variables implicites out (Page - javax.servlet.jsp.JspWriter) clear, clearBuffer, flush, getBufferSize, getRemaining Représente la réponse http sous la forme d’un flux de caractères config (Session - javax. servlet. ServletConfig) getInitParameter, getInitParameterNames page (page - java.lang. Object) getMimeType, getRealPath Peu utilisé exception (page - java.lang. Throwable) getMessage, getLocalizedMessage, printStackTrace Variables implicites

Ecrire des JSPs (1) JSPs de présentation : Démarche JSPs de présentation : Générer dans un premier temps le code HTML de la partie présentation Enregistrer le fichier avec l’extension .jsp Programmer le code Java sur le serveur qui gère la partie fonctionnelle Insérer les appels JSP pour la communication avec ce code Java Certaines JSPs servent uniquement à réaliser des traitements, l'écriture de la réponse est alors déléguée La ligne de conduite à suivre pour le développement de pages JSP met bien en évidence la possibilité de paralléliser le travail et d'affecter à chaque développeur la partie qui le concerne : la présentation pour le Web designer et la logique métier pour le concepteur-programmeur. Une page JSP peut parfaitement servir à effectuer des traitements comme une servlet, pour exploiter la validation d'un formulaire par exemple. En effet, elle a accès aux mêmes éléments qu'une servlet (requête, session, réponse, …).

Ecrire des JSPs (2) JSP Affichage de formulaire Démarche JSP Affichage de formulaire JSP Traitement du formulaire JSP Affichage de résultat JSP Affichage de page d'erreur POST forward En fonction du résultat La définition d'un service Web se compose de plusieurs éléments : une unité de saisie, c'est un formulaire HTML généré par une page JSP, une unité de traitement de ce formulaire, c'est une page JSP qui récupère les paramètres de la requête POST, instancie les objets métiers nécessaires et réalise les traitements nécessaires, elle redirige (forward) la présentation du résultat vers une page JSP adaptée (affichage de résultat ou affichage d'erreur), une unité de réponse, c'est une page HTML générée dynamiquement en fonction du résultat du traitement ; deux pages de réponses sont programmées : une pour les cas standards et une pour les cas d'erreurs.

Un exemple complet JavaBean JSP Ex 7-8 package com.example ; public class OurBean { private String value; public void setValue (String s ) { value = s ; } public String getValue ( ) { return value ; Démarche JavaBean <HTML> <BODY> <H2> cette page teste notre bean </H2> <jsp:useBean id= “notreBean” class= “com.example.OurBean” scope= “session” /> <% notreBean.setValue(“présent”); %> <P> notre bean est <%= notreBean.getValue(); %> </P> </BODY> </HTML> JSP Ex 7-8