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

CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page.

Présentations similaires


Présentation au sujet: "CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page."— Transcription de la présentation:

1 CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page

2 Module UV JSP Page 2 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Plan du cours Rappel sur les applications Web Les techniques côté serveur Gestion des cookies Les Java Server Pages (JSP)

3 Module UV JSP Page 3 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Applications Web Serveur Navigateur Web Serveur Web Environnement d exécution Source de données Script/programme serveur Internet/Intranet Réponse Requête (http,…) 2e niveau 3e niveau 1er niveau Client

4 Module UV JSP Page 4 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Architecture n 3 niveaux : –niveau 1: présentation navigateur + serveur Web –niveau 2: applicatif script ou programme –niveau 3: données données nécessaires au niveau 2

5 Module UV JSP Page 5 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Déroulement n Une application Web type : –1: recueille les données utilisateur (niveau 1) –2: envoie une requête au serveur Web –3: exécute le programme serveur requis (niveau 2&3) –4: assemble/renvoie les données vers le navigateur (niveau 1)

6 Module UV JSP Page 6 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle 1: Collecte des données utilisateur n Quelques solutions pour le client : –très utilisée : formulaire HTML saisie de champs puis « submit » validation par scripts (JavaScript) –nouvelle : applets Java : connexion socket / RMI avec le serveur Web mise en forme et validation des données –...

7 Module UV JSP Page 7 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle 2: Requête HTTP vers le serveur Web –contient : l URL de la ressource à accéder (page,script,prog) les données de formatage (le cas échéant) des infos d en-tête complémentaires –requête GET : pour extraire des informations sur le serveur intègre les données de formatage à l URL value1&… –requête POST : pour modifier les données sur le serveur données de la page assemblées/envoyées vers le serveur

8 Module UV JSP Page 8 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle 3: Exécution d un script/prog. serveur n Avec la requête http, le serveur Web : –1) identifie le type d environnement d exploitation à charger (mapping) en fonction de l extension du fichier (. jsp,. cgi,...) ou du répertoire où il se trouve ( cgi-bin /, servlet /) –2) charge l environnement dexécution (run-time) interpréteur Perl pour les programmes cgi en perl JVM pour les servlets Java,...

9 Module UV JSP Page 9 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle 4: Retour des résultats au navigateur n Le script/prog côté serveur : –précise le type de contenu (HTML, XML, images,) –intègre la réponse dans un flot de sortie n Le navigateur : –définit le type MIME dans l en-tête (text/html,…) –et affiche les données en fonction duplication de lenvironnement (variables, exécution), mémoire allouée, copie du programme, … retourne (en général) du HTML

10 Module UV JSP Page 10 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Techniques côté serveur n CGI (Common Gateway Interface) n ASP (Microsoft) n Servlets Java et JSP (Sun)

11 Module UV JSP Page 11 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle CGI (rappel) –Principe : un processus par requête est lancé sur le serveur Interface CGI Env. execution Var. env. Programme Processus 1 Env. execution Var. env. Programme Processus 3 Env. execution Var. env. Programme Processus 2 Serveur Web

12 Module UV JSP Page 12 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle CGI –Avantages : gratuit, pris en charge par tous les serveurs Web actuels peut être écrit dans nimporte quel langage (surtout perl) –Inconvénients : manque dévolutivité (plusieurs processus créés) –serveur très sollicité si plusieurs requêtes au même moment –amélioré par : »FastCGI : instance partagée des programmes CGI »mod_perl (Apache) : script CGI interprété et exécuté dans le serveur Web assez lent parfois difficile à développer

13 Module UV JSP Page 13 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Technologies J2EE : les JSP n Les Pages JSP: –La technologie JSP permet d'embarquer des composants dans une page et de laisser ces derniers générer la page qui sera finalement renvoyée au client –Une page JSP peut contenir du code HTML, du code Java et des composants JavaBean –JSP est en réalité une extension du modèle Servlet : lors du premier accès a la page JSP, le conteneur Web la compile en Servlet –Permet de nettement séparer la présentation du code métier (Concepteurs Web, développeurs)

14 Module UV JSP Page 14 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Technologies J2EE : les JSP n Pages JSP –JSP fournit une interface standard basée sur XML permettant de définir des balises (tags) personnalisées et les regrouper dans des bibliothèques de balises (taglibs) –Avec J2EE, la spécification JSP a atteint la version 1.1

15 Module UV JSP Page 15 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Technologies J2EE : les JSP n Architecture typique d'une application Web Navigateur JSP Servlet Conteneur Web Entrepôt de données HTTP(s) HTML, XML

16 Module UV JSP Page 16 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Les JSP (Java Server Pages) Réponse aux ASP/PHP/embedded perl, etc... Technologie qui permet de mixer Java et HTML Welcome to Our Store Welcome to Our Store Welcome, To access your account settings, click here. Regular HTML for all the rest of the on-line store's Web page.

17 Module UV JSP Page 17 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Un exemple de JSP/Servlet en Java package hall; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); out.println("Hello World");out.flush(); }

18 Module UV JSP Page 18 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Introduction Gestion des formulaires HTML La partie compliquée = paramètres du formulaire Visibles ou non dans l'URL (GET/POST) Ces paramètres doivent être décodés ! Avec les servlets : un vrai plaisir !

19 Module UV JSP Page 19 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Récupèrer les paramètres Méthode getParameter() –Fonctionne avec GET ou POST public class ShowParameters extends HttpServlet { public void doGet(HttpServletRequest request,...) { out.println(request.getParameter(param1)); Enumeration paramNames=request.getParameterNames(); String[] paramValues = request.getParameterValues(paramNames); }

20 Module UV JSP Page 20 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Les cookies n Morceaux dinformations envoyés par le serveur … et renvoyés par le client quand il revient visiter le même URL n Durée de vie réglable n Permet la persistance

21 Module UV JSP Page 21 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle A quoi ça sert ? n Identification des utilisateurs (e-commerce) n Eviter la saisie dinformations à répétition –login, password, adresse, téléphone… n Gérer des « préférences utilisateur » –sites portails… n...

22 Module UV JSP Page 22 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Cookie et sécurité ? n Jamais interprété ou exécuté : pas de virus n Un cookie est limité à 4KB et les navigateurs se limitent à 300 cookies (20 par site) : pas de surcharge de disque n Bien pour rendre privées des données non sensibles –nom, adresse, … n … mais ne constitue pas un traitement sérieux de la sécurité

23 Module UV JSP Page 23 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Gestion des cookies ? n Utiliser les fonctions de l API des servlets… –créer un cookie : classe Cookie, –écrire/lire un cookie : addCookie(cookie), getCookies(), –positionner des attributs dun cookie : cookie.setXxx (…) n Exemple d'envoi d'un cookie :... String nom = request.getParameter("nom"); Cookie unCookie = new Cookie("nom", nom);...ici positionner des attributs si on le désire response.addCookie(unCookie);...

24 Module UV JSP Page 24 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Création d'un cookie n Cookie unCookie = new Cookie(name, value); –2 arguments de type java.lang.String : name et value –caractères non autorisés : espace blanc [ ] ( ) =, " / : ;

25 Module UV JSP Page 25 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Attributs des cookies getValue/setValue getName/setName n getComment/setComment getMaxAge/setMaxAge : délai restant avant expiration du cookie (en seconde) –par défaut : pour la session courante getPath/setPath : répertoire où s'applique le cookie –dir. courant ou pages spécifiques

26 Module UV JSP Page 26 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Récupération des cookies n Exemple de récupération des cookies Cookie [] cookies = request.getCookies(); String nom = getCookieValue(cookies, "nom", "non trouvé");... public static String getCookieValue(Cookie [] cookies, String cookieName, String defaultValue) { for(int i=0; i < cookies.length; i++) { Cookie cookie = cookies[i]; if(cookieName.equals(cookie.getName()) return(cookie.getValue()); } return(defaultValue); }

27 Module UV JSP Page 27 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Temps d'expiration n Par défaut, durée de vie d'un cookie = la connexion. n Si on veut que le cookie soit sauvé sur disque, modifier sa durée de vie : public static final int SECONDS_PER_YEAR = 60*60*24*365; cookie.setMaxAge(SECONDS_PER_YEAR);

28 Module UV JSP Page 28 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Principes de base et architecture JSP n But des JSP : simplifier la création et l'administration des pages Web dynamiques, en séparant le contenu de la présentation n Les pages JSP ne sont que des fichiers contenant du code HTML ou XML standard et de nouvelles balises de script n Converties en servlet lors de leur toute première invocation n L'objectif principal consiste à simplifier la couche de présentation dynamique via une architecture multiniveaux

29 Module UV JSP Page 29 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle JSP n Du java dans une page WWW ! –Entre les balises JSP On peut mettre des pages.jsp partout où on met des pages HTML n Elles sont converties "au vol" en servlet par le moteur de JSP

30 Module UV JSP Page 30 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Un exemple simple Un exemple de page JSP <% for(int i = 0; i < 26; i++){ for(int j = 0; j < 26; j++){ c = (char)(0x41 + (26 - i + j)%26); %>

31 Module UV JSP Page 31 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Passons à la pratique n La structure d'une page JSP est le subtil mélange d'une servlet et de balises HTML, auquel a été ajoute une pincée de code Java entre des balises et un zeste de balises XML n Balises JSP se divisent en trois catégories –les éléments de script : permettent d'insérer du code Java dans une page JSP –les directives : elles influencent la structure globale de la servlet issue de la conversion –les actions : il s'agit de balises spéciales servant à modifier le comportement du code JSP durant son exécution –On peut également créer ses propres balises !

32 Module UV JSP Page 32 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Passons à la pratique n Certaines règles générales s'appliquent aux pages JSP –les balises JSP sont sensibles à la casse –les directives et les éléments de script obéissent à une syntaxe qui ne repose pas sur XML (une syntaxe de type XML peut également être utilisée) –les valeurs des attributs dans les balises apparaissent toujours entre guillemets –les URLs présentes dans les pages JSP respectent les conventions de la servlet –si une URL commence par /, nomme chemin relatif de contexte, elle est interprétée en fonction de l'application Web à laquelle la JSP appartient, sinon elle est interprétée en fonction du code JSP courant

33 Module UV JSP Page 33 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Directives JSP n Les directives JSP sont des messagers envoyés par le code JSP au conteneur JSP n Elles servent à définir les valeurs globales, telles que les déclarations de classes, les méthodes à mettre en œuvre, le type de contenu produit... n Elles ne produisent aucune sortie à envoyer au client n La portée des directives concerne l'intégralité du fichier JSP n Les directives commencent par une balise n La syntaxe générale est la suivante :

34 Module UV JSP Page 34 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Directives JSP n On peut utiliser trois directives principales dans les pages JSP n La directive page n la directive include n la directive taglib

35 Module UV JSP Page 35 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Directives JSP n La directive page –Elle est utilisée pour définir et manipuler un nombre important d'attributs des pages et qui influencent le fichier JSP dans sa totalité –Elle sert également à communiquer ces attributs au conteneur –La syntaxe générale de la directive page est la suivante : –Elle peut par exemple contenir les imports des paquetages et classes nécessaires au code Java contenu, les attributs de session, le niveau de sécurité des threads...

36 Module UV JSP Page 36 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle La directive : page n Valeurs possibles : page language="java" – page …

37 Module UV JSP Page 37 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Directives JSP Exemple de directive page page language="Java" import="java.rmi.*,java.util.*" session="true" buffer="12kb" autoFlush="true" info="Ma directive page" errorPage="error.jsp" isErrorPage="false" isThreadSafe="false" %> Page de test de la directive page Page de test de la directive page Bla bla bla...

38 Module UV JSP Page 38 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Directives JSP n La directive include –Elle ordonne au conteneur d'insérer le contenu de la ressource dans la page JSP courante, en l'imbriquant à la place de la directive –La syntaxe de la directive include est la suivante : –Le fichier inclus peut être une ressource statique (tel qu'un fichier HTML) ou une autre page JSP –Exemple : Page de test 1 de la directive include Page de test 1 de la directive include

39 Module UV JSP Page 39 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Directives JSP n La directive taglib –Elle permet à la page d'utiliser des extensions de balises (voir fin cours) –Le conteneur exploite cette bibliothèque de balises afin de savoir ce qu'il doit faire lorsqu'il rencontre des balises personnalisées dans la page JSP –La syntaxe de la directive taglib est la suivante : –On ne le fera pas dans ce cours (manque de temps), mais ce mécanisme permet de créer des balises personnalisées qui correspondent en fait a des classes Java –Les taglibs permettent de séparer la présentation du code de manière optimale

40 Module UV JSP Page 40 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Eléments de script n Les éléments de script permettent l'insertion dans la JSP de code Java, de déclarations de variables ou de méthodes, de scriptlets (code Java arbitraire) et d'expressions –Déclarations Bloc de code Java dans une page JSP utilisé pour définir des variables et des méthodes de classe dans une servlet générée Initialisées lors de l'initialisation de la page JSP Portée de "classe" dans la servlet générée : accessible via la page JSP à d'autres déclarations, expressions et fragments de code Délimitée par et n'envoie rien dans le flux de sortie –Scriptlets Bloc de code Java exécuté au cours du processus de traitement de la requête, et qui se trouve entre des balises Peuvent produire une sortie vers le client Peuvent modifier les objets en interne à l'aide des méthodes

41 Module UV JSP Page 41 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Eléments de script : les déclarations n <%! private int accessCount = 0; private int incrementCount() {return accessCount++;} %>... Nombre et liste des articles Nombre d'articles : –définitions des méthodes et variables de classe à utiliser dans toute la page –définit les méthodes jspInit() et jspDestroy()

42 Module UV JSP Page 42 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Eléments de script : les scriptlets n (scriplets) <% String nom = request.getParameter("nom");... out.println("Nom de l'utilisateur " + nom); %> –c'est un bloc de code Java –placé dans _jspService() de la servlet générée –ayant accès : aux variables et beans déclarés ( ) aux objets implicites (voir plus loin)

43 Module UV JSP Page 43 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Eléments de script –Expressions Une expression est une notation courte d'une scriptlet qui renvoie la valeur d'une expression vers le client L'expression est évaluée lors du traitement de la requête HTTP, le résultat est converti en String puis il est affiché Délimitée par des balises Si le résultat de l'expression est un objet, la conversion est exécutée à l'aide de la méthode toString() de l'objet La syntaxe est la suivante :

44 Module UV JSP Page 44 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Eléments de script : les expressions n Il est et votre hostname est –permet dintégrer des valeurs dans le code HTML –ces valeurs sont évaluées, converties en chaînes de caractères et affichées –les objets implicites (request, response, session, out,...) disponibles

45 Module UV JSP Page 45 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Actions standard n Les actions standard sont des balises qui affectent l'exécution de la page JSP et la réponse renvoyée au client n Elles doivent être fournies par tous les conteneurs n Une action standard est en réalité une balise incorporée dans une page JSP n Au cours de la compilation de la servlet, le conteneur rencontre cette balise et la remplace par le code Java correspondant à la tache prédéfinie requise n Par exemple, s'il rencontre une action include standard

46 Module UV JSP Page 46 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Actions standard n Elles servent à offrir aux auteurs des pages JSP des fonctionnalités de base qu'ils peuvent exploiter afin d'exécuter des taches courantes n Les types d'actions standard sont les suivants : –

47 Module UV JSP Page 47 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Actions standard n –Pour séparer le code de la présentation, il est conseille d'encapsuler le code dans un objet Java (un JavaBean), puis de l'instancier et de l'utiliser au sein de la page JSP – permet de créer ou de localiser une instance d'un bean donne, d'en définir la durée de vie... –La syntaxe de l'action useBean est la suivante : –ou beandetails est au choix class="className" class="className" type="typeName" beanName="beanName" type="typeName" type="typeName"

48 Module UV JSP Page 48 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Actions standard n –Utilisée pour fixer les propriétés d'un bean –Il est possible de définir les propriétés d'un bean de plusieurs manières : au moment de la requête, à l'aide de l'objet request au moment de la requête, avec une expression évaluée à l'aide d'une chaîne spécifiée (ou codée physiquement) dans la page –La syntaxe de l'action setProperty est la suivante : ou propertydetails est au choix : –property="*" –property="propertyName" –property="propertyName" param="parameterName" –property="propertyName" value="propertyValue"

49 Module UV JSP Page 49 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Actions standard n –Utilisée pour accéder les propriétés d'un bean –Accède à la valeur d'une propriété, la convertit en String et l'envoie vers le flux de sortie, puis vers le client –La syntaxe est la suivante : et les attributs sont les suivants : –name : Nom de l'instance du bean –property : Nom de la propriété a obtenir

50 Module UV JSP Page 50 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Usebean et getProperty n Mécanisme très puissant ! n Pour lire une propriété du bean :

51 Module UV JSP Page 51 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Usebean et setProperty n Pour modifier une propriété du bean : –Initialise tous les attributs de l objet name avec les paramètres HTTP du même nom –En 2 lignes !

52 Module UV JSP Page 52 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Exemple d'utilisation d'un bean n La page JSP :... Le message est : …

53 Module UV JSP Page 53 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Actions standard n –Permet de fournir d'autres balises contenant des informations complémentaires sous la forme de paires nom/valeur –Elle est utilisée conjointement avec les actions include, forward et plugin –La syntaxe est la suivante : Les attributs disponibles sont les suivants : –name : Clé associée a l'attribut –value : valeur de l'attribut

54 Module UV JSP Page 54 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Actions standard n –Permet l'insertion dans la page JSP courante, au moment du traitement de la requête, de ressources statiques ou dynamiques –Même fonctionnement que le Dispatcher de servlets –Une page incluse ne peut définir ne en-tête ni cookie –La syntaxe est la suivante : – Ou : –URL : La ressource a inclure –flush : toujours true ! Les paramètres passes dans les balises sont accessibles a la ressource qui est incluse au travers l'objet request transmis

55 Module UV JSP Page 55 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Actions standard n –Permet le transfert de la requête vers une autre page JSP, une autre servlet ou une ressource statique –La syntaxe est la suivante : – –La ressource vers laquelle la requête est transférée doit se trouver dans le même contexte que la page JSP qui émet la requête –Il s'agit d'une redirection cote serveur qui prend en compte des paramètres supplémentaires

56 Module UV JSP Page 56 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Actions standard n –Utilisée dans les pages pour générer des balises HTML propres au navigateur client –Cette action a pour conséquence de télécharger le plug-in Java par exemple, puis d'exécuter l'applet ou le composant JavaBean spécifié dans la balise –S'accompagne parfois de deux balises supplémentaires : afin de transmettre des paramètres supplémentaires a l'applet ou au JavaBean afin de spécifier le contenu a afficher dans le navigateur client si le plug-in ne peut pas démarrer

57 Module UV JSP Page 57 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Objets Implicites n L'API servlet inclut des interfaces qui établissent des couches d'abstraction pratiques pour le developpeur –HttpServletRequest, HttpSession... n Ces interfaces représentent les données HTTP et fournit les méthodes appropriées pour les manipuler n JSP propose certains objets implicites, reposant sur l'API Servlet n Ces objets sont accessibles via des variables standard et sont automatiquement disponibles pour vos pages JSP sans que vous ayez besoin de rajouter du code

58 Module UV JSP Page 58 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Objets Implicites n Les objets implicites disponibles dans une page JSP sont les suivants : –request : représente l'objet HttpServletRequest –response : représente l'objet HttpServletResponse –pageContext : point d'accès pour de nombreux attributs de page –session : l'objet HttpSession –application : contexte de servlet ServletContext –out : le flux de sortie JspWriter (idem response.getWriter()) –config : l'objet ServletConfig pour cette page –page : instance de la classe de servlet d'implémentation qui traite la requête en cours

59 Module UV JSP Page 59 / 59 Deruelle Laurent Copyright © 2002 Laurent Deruelle Quelques exemples dactions n –inclusion au moment où la page est servie, pas au moment où elle est traduite en servlet. n –permet d'instancier un bean depuis une page JSP. –nécessite de connaître le mécanisme des beans... –associé à et n –redirige vers une autre URL


Télécharger ppt "CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV JSP JSP : Java Server Page."

Présentations similaires


Annonces Google