La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

JAVA SERVER PAGES (JSP)

Présentations similaires


Présentation au sujet: "JAVA SERVER PAGES (JSP)"— Transcription de la présentation:

1 JAVA SERVER PAGES (JSP)

2 OBJECTIFS Implanter des pages Web dynamiques utilisant la technologie des pages JavaServer Apprendre les éléments syntaxiques des pages JavaServer Être en mesure de structurer une application Web comme une séquence de pages JavaServer Comprendre la relation entre les pages JavaServer et les servlets 11/7/2018 IFT1020

3 CODES date.jsp GetTimeFromDate.java et heure.jsp pizza.html
plusieursheureslocales branchement zonedb 11/7/2018 IFT1020

4 Contenu web dynamique On peut utiliser les pages JavaServer (JSP) pour implanter des pages Web dynamiques Pour utiliser les JSP, on a besoin d’un serveur intégré avec un container JSP Le serveur Apache Tomcat est gratuit 11/7/2018 IFT1020

5 Serveur Tomcat au DIRO NetBeans vient avec son propre serveur Tomcat.
Le DIRO a installé Tomcat/Jakarta sur le serveur web www2 port 8080. Pour l'utiliser il faut suivre les étapes dictées par le groupe de support du DIRO : Il faut attendre au moins 4h, le temps que le serveur fasse une mise à jour du contexte xml de l'usager, avant de pouvoir l’utiliser. Vous pouvez aussi vous inspirer de la page de Guy Lapalme, où vous trouverez un exemple de date avec JavaBean. 11/7/2018 IFT1020

6 Web Dynamique Une page JavaServer contient des annotations HTML et des instructions Java. Les instructions Java sont executées chaque fois que la page est livrée à un fureteur. Une instruction pour insérer la date et l’heure courantes dans une page web est : <%= new java.util.Date() %> 11/7/2018 IFT1020

7 Allons voir date.jsp… 11/7/2018 IFT1020

8 Pour déployer la page JSP pour la date
Insérer le code de la page JSP dans un fichier en utilisant un éditeur de texte. Déplacer le fichier dans le répertoire des applications web de votre engin JSP. Par exemple, si vous utilisez Tomcat, créer le répertoire C:\jakarta-tomcat\webapps\ift1020 Placez le fichier date.jsp dans ce répertoire. Démarrez le serveur web. Chargez l’adresse ( sous NetBeans) 11/7/2018 IFT1020

9 Exécution du web dynamique…
Le container JSP lit la page demandée et la transforme en page HTML Les annotations HTML ne sont pas touchées (restent inchangées) Les annotations JSP ( <%= %> ) sont traitées Les expressions contenues dans les annotations JSP sont évaluées et converties en chaînes de caractères avec la méthode toString 11/7/2018 IFT1020

10 …Exécution du web dynamique
Les chaînes sont introduites dans la page HTML Le document résultant ne contient que des annotations HTML Le serveur web envoie le document au fureteur 11/7/2018 IFT1020

11 Le container JSP réécrit la page demandée
Fichier JSP Container JSP Fichier HTML Serveur Web Internet Fureteur 11/7/2018 IFT1020

12 Encapsulation de calculs dans des JavaBeans
La plupart des pages web sur le réseau nécessitent la contribution de deux types d’expert : Le programmeur qui comprend et développe les méthodes et les calculs pour afficher les résultats que la page doit afficher. Un designer graphique qui détermine comment afficher les résultats. Il est beaucoup mieux dans ce contexte de séparer le code Java des annotations HTML. Tout calcul non trivial devrait être effectué dans une classe Java séparée. On peut connecter un ou plusieurs JavaBeans à une page JSP. 11/7/2018 IFT1020

13 JavaBeans… Un JavaBean est une classe Java
Il doit avoir un constructeur par défaut Un JavaBean expose ses propriétés à travers des méthodes get et set Les propriétés sont accédées et modifiées par des méthodes dont les noms suivent une convention 11/7/2018 IFT1020

14 JavaBeans… méthode d’accès méthode de modification
Si le nom de la propriété est nomPropriete et son type est Type méthode d’accès Type getNomPropriete() méthode de modification void setNomPropriete(Type nouvelleValeur) Une propriété Booléene utilise une convention différente : boolean isNomPropriete() void setNomPropriete(boolean nouvelleValeur) Par convention, le nom du bean se termine par Bean Il ne faut faire aucune supposition quant à la représentation interne des données des beans 11/7/2018 IFT1020

15 JavaBeans… Une page JSP donne un accès aux propriétés des JavaBeans sans avoir a écrire de code Java. Pour utiliser un bean dans un page JSP, on utilise la directive jsp:useBean On donne un nom à l’objet et on spécifie le nom de la classe du bean <jsp:useBean id =“toune" class=“TouneBean"/> Cette directive invoque le constructeur par défaut de la classe TouneBean Il fabrique une instance d’objet dont le nom est toune 11/7/2018 IFT1020

16 JavaBeans… Pour modifier une propriété dans le bean, on utilise la directive setProperty <jsp:setProperty name=“toune" property=“tempo" value=“140"/> Pour lire une propriété dans le bean, on utilise la directive getProperty <jsp:getProperty name=“toune" property=“tempo"/> Cette dernière retourne une chaîne de caractères qui est insérée dans la page HTML résultante 11/7/2018 IFT1020

17 JavaBeans… Si par exemple on ne veut pas afficher la date mais juste l’heure dans notre page date.jsp On peut extraire l’heure à l’aide de la méthode getTimeInstance de la classe DateFormat On place ce code dans un bean 11/7/2018 IFT1020

18 Allons voir GetTimeFromDateBean.java et heure.jsp
11/7/2018 IFT1020

19 JavaBeans C’est une bonne pratique de mettre les directives du bean au début du fichier JSP, avant les annotations HTML. heure.jsp et GetTimeFromDateBean.java doivent être placés dans les répertoires appropriés time.jsp dans c:\Jakarta-tomcat\webapps\ift1020 TimeFormatterBean.java dans c:\Jakarta-tomcat\webapps\ift1020\WEB-INF\classes Rappelons-nous que nous utilisons les JavaBeans pour séparer, dans nos présentations, les annotations HTML des calculs Java. 11/7/2018 IFT1020

20 Lire des paramètres… On veut modifier notre page JSP pour tenir compte de la ville de l’utilisateur La librairie Java contient une classe TimeZone : Une zone de temps (la même pour toute les villes partageant le même fuseau horaire) est identifiée par une chaîne telle que "America/Montreal" “Europe/Paris" La méthode statique getAvailableIDs retourne un tableau de chaînes contenant tous les identificateurs de zones disponibles (ID) La méthode statique getTimeZone retourne un objet de la classe TimeZone pour un ID donné : String zoneID = "America/Montreal"; TimeZone zone = TimeZone.getTimeZone(zoneID); 11/7/2018 IFT1020

21 Lire des paramètres… L’utilisateur entre un ville comme Montreal
Notre bean va vérifier si la chaîne “Montreal” existe à la fin des zones de temps La page JSP va formatter l’heure courante pour cette zone de temps ou imprimer un message d’erreur comme quoi la ville n’a pas été trouvée ou n’est pas disponible 11/7/2018 IFT1020

22 Lire des paramètres… On a besoin d’une forme HTML pour saisir l’entrée de l’utilisateur Cette forme contient un champs de texte et un bouton pour soumettre la forme au serveur JSP 11/7/2018 IFT1020

23 Allons voir heurelocale.html …
11/7/2018 IFT1020

24 Lire des paramètres… Quand un fureteur soumet une forme, il envoit au serveur web les noms et valeurs de tous les éléments de la forme Le nom ici est “ville” La valeur est le contenu du champs de texte correspondant L’attribut action de la forme spécifie l’URL du programme-serveur qui traite les éléments de la forme Ici heurelocale.jsp Dans une page JSP, on peut accéder aux données de la forme à travers l’objet prédéfini request La méthode getParameter de la classe ServletRequest retourne la valeur d’un élément à partir de son nom Ici pour obtenir la ville tapée par l’utilisateur : <%= request.getParameter("ville")%> 11/7/2018 IFT1020

25 Lire des paramètres Pour fixer la propriété “ville” du HeureLocaleBean
<jsp:setProperty name=“heure“ property=“ville“  value="<%= request.getParameter(\“ville\")%> /> Qu’on peut aussi abréger avec le raccourci <jsp:setProperty name=“heure" property=“ville" param=“ville"/> 11/7/2018 IFT1020

26 Allons voir heurelocale.jsp et HeureLocaleBean.java…
11/7/2018 IFT1020

27 Formes HTML… Une forme HTML contient des éléments d’interface-usager tels que : Champs de texte Champs mot de passe Zone de texte (text area) Boutons radio Boîtes à cliquer Liste de sélection Boutons de soumission (submit buttons) Champs cachés (texte caché) 11/7/2018 IFT1020

28 Allons voir pizza.html…
11/7/2018 IFT1020

29 Formes HTML… La plupart des éléments d’une forme HTML utilise la syntaxe suivante : <input type=nom_type_element attributs/> Il faut inclure le nom des attributs. On peut inclure des valeurs d’attribut par défaut. 11/7/2018 IFT1020

30 Formes HTML… Champs de texte
<input type="text" name=“titre" value="" size="16" maxlength=“30" /> Mot de passe <input type="password" name=“No. carte de crédit“ size="16" maxlength="19" /> Zone de texte <textarea name="..." rows="..." cols="..."> default text </textarea> 11/7/2018 IFT1020

31 Formes HTML… Boutons radio
<input type="radio" name=“Grosseur" value="S"/>Small 10 po. <input type="radio" name=“Grosseur" value=“M"/> Medium 12 po. <input type="radio" name=“Grosseur" value=“L" checked="checked"/>Large 14 po. <input type="radio" name=“Grosseur" value=“XL"/>X-Large 16 po. Seulement un bouton radio peut être coché à la fois Boîtes à cliquer <input type="checkbox" name=“Ingredients“ value=“Pe“ />Peperoni <input type="checkbox" name=“Ingredients" value=“Ch" />Champignons <input type="checkbox" name=“Ingredients" value=“Ex" />Extra Fromage <input type="checkbox" name=“Ingredients" value=“Ba" />Bacon <input type="checkbox" name=“Ingredients" value=“Oi" />Oignons <input type="checkbox" name=“Ingredients" value=“Ol" />Olives <input type="checkbox" name=“Ingredients" value=“Pi" />Piments <input type="checkbox" name=“Ingredients" value=“Po" />Poulet Plusieurs boîtes peuvent être cochées et auront l’attribut “checked” à la valeur “checked” Ici si deux boîtes sont cochées (cf. Bacon et Olives), le fureteur envoit au serveur : Ingredients=Ba+Ingredients=Ol 11/7/2018 IFT1020

32 Formes HTML… Liste-sélection : <select name=“Pâte">
<option value=“T“ selected="selected">Traditionnelle</option> <option value=“M" >Mince</option> <option value=“F" >Fromage</option> </select> 11/7/2018 IFT1020

33 <input type="submit" value=“Commandez !"/>
Bouton de soumission <input type="submit" value=“Commandez !"/> Champs caché (non éditables) <input type="hidden" name=“No. carte credit“ value=“ "/> Le fureteur n’affiche pas le champs caché Il envoit les paires nom/valeur des champs au serveur lorsque la forme est soumise. 11/7/2018 IFT1020

34 HTML Forms On place tous les éléments de la forme dans un élément de type form <form action=“pizza.jsp" method="POST"> . </form> Une forme HTML doit spécifier l’adresse URL du programme-serveur qui la traite. L’attribut action contient cet URL. On met l’attribut method à la valeur POST parce qu’il n’y a pas de temps limite pour remplir cette forme. 11/7/2018 IFT1020

35 Session… Une session est une séquence de requêtes de pages à partir du même fureteur et au même serveur web Pour saisir une session de pages JSP, on utilise un bean en spécifiant une portée de type session <jsp:useBean id=“panier" class=“PanierEpicerieBean" scope="session"/> L’utilisateur demande la page JSP pour la première fois, un nouveau panier est construit. L’utilisateur retourne à la même page ou visite une autre page de la même application, le panier est toujours là. Si le bean n’a pas l’attribut de portée (scope) assignée à la valeur session, le bean à une portée de type page et un nouvel objet est créé chaque fois que la page est visitée. 11/7/2018 IFT1020

36 Session… Créer un programme qui permet à un utilisateur d’ajouter des villes et leurs heures locales Dans la forme HTML initiale, l’application web demande le nom de la première ville La page JSP affiche la première ville et une forme pour entrer une autre ville L’utilisateur peut ajouter autant de villes que désirées Toutes les villes sont stockées dans un objet de la classe PlusieursHeuresLocalesBean 11/7/2018 IFT1020

37 Session <jsp:useBean id=“heuresLocales“
L’objet bean possède la portée de type session et va donc garder la liste des villes Pour garder les villes dans un bean PlusieursHeuresLocalesBean <jsp:useBean id=“heuresLocales“ class=“PlusieursHeuresLocalesBean" scope="session"/> Une instance est créée pour toutes les pages La méthode setVille ajoute une ville à l’objet bean La nouvelle ville vient du champs de texte de nom ville <jsp:setProperty name=“heureLocales" property=“ville" param=“ville"/> 11/7/2018 IFT1020

38 Allons voir plusieursheureslocales
Allons voir plusieursheureslocales.[html | jsp] et PlusieursHeuresLocalesBean.java… 11/7/2018 IFT1020

39 Branchement de pages… Une page JSP peut envoyer une requête à une autre page On peut utiliser le “forward” pour implanter les branchements Envoyer la requêtre à une page JSP qui vérifie l’entrée mais qui n’a pas de sortie HTML La page évalue l’entrée et utilise la directive jsp:forward pour sélectionner une autre page. 11/7/2018 IFT1020

40 Branchement de pages… La syntaxe de la directive de branchement est :
<jsp:forward page="url"/> Provoque le chargement de la page trouvée à l’adresse URL Les données du bean courant et des beans de portée “request” sont envoyées à la nouvelle page Page de branchement : <% if (condition) { %> <jsp:forward page="url1"/> } else <jsp:forward page="url2"/> NB. On a dit qu’on ne mettait pas de code Java dans les pages JSP et pourtant ici on a des instructions Java entre les <% %>!!! C’est que les pages de branchement sont une exception car elle ne contiennent aucun élément graphique (elle n’est pas designée par le graphiste!) 11/7/2018 IFT1020

41 Branchement de pages On peut utiliser cette technique pour traiter les villes dont la zone de temps n’est pas connue. On débute une forme HTML similaire à celle de l’exemple précédent Sauf que nous enverrons les données à une page JSP de branchement (non graphique) Cette page va ensuite envoyer la requête à la page appropriée 11/7/2018 IFT1020

42 Allons voir branchementheure. [html | jsp], resultatheure
Allons voir branchementheure.[html | jsp], resultatheure.jsp et erreurheure.jsp… 11/7/2018 IFT1020

43 Application à trois parties…
Partie présentation : le fureteur Partie logique : l’engin JSP, les pages JSP et le JavaBean Partie stockage : la base de données 11/7/2018 IFT1020

44 Application à trois parties…
On va garder une table des zones de temps dans une base de données On va construire une classe ZoneDBBean qui va consulter la base de données pour trouver la ville demandée Si elle n’est pas disponible, on regarde à travers les IDs comme auparavant On utilise une classe SourceDonneesBean pour gérer la connection avec la BD 11/7/2018 IFT1020

45 Application à trois parties…
Une seule instance de SourceDonneesBean est nécessaire pour toutes les pages JSP On fixe sa portée (scope) à la valeur "application" On stocke les propriétés de la base de données dans le fichier web.xml dans le sous-répertoire WEB_INF Les pages JSP peuvent accéder à l’information dans web.xml On utilise la méthode getInitParameter de l’objet prédéfini application 11/7/2018 IFT1020

46 Application à trois parties…
Retrouver les informations pour accéder à la base de données dans le fichier web.xml et initialiser la base de données (login à SQL) ZoneDBBean fait une requête à la base de données pour trouver la ville demandée On a besoin d’une base de données SQL : villefuseau.sql qui contient la table VilleFuseau. 11/7/2018 IFT1020

47 villefuseau.sql CREATE TABLE VilleFuseau( Ville CHAR(30), Fuseau CHAR(45)) INSERT INTO VilleFuseau VALUES( ‘San Francisco’, ‘America/Los_Angeles’) INSERT INTO VilleFuseau VALUES( ‘Quebec’, ‘America/Montreal’) Ville Fuseau San Francisco America/Los_Angeles Quebec America/Montreal 11/7/2018 IFT1020

48 Allons voir zonedb.[html | jsp], SourceDonneesBean.java et ZoneDBBean.java…
11/7/2018 IFT1020

49 Servlets… Un servlet est une classe qui étend (extends) la classe HTTPServlet Les pages JSP sont en fait traduites en servlets Un servlet est un programme Java Effectuant des calculs (Java) Retournant des données à retourner au fureteur (HTML) 11/7/2018 IFT1020


Télécharger ppt "JAVA SERVER PAGES (JSP)"

Présentations similaires


Annonces Google