1 / 130

Module Java Expert

Module Java Expert. CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT. UV J2EE. Module Java. Vue d’ensemble de la technologie J2EE Les serveurs d’applications J2EE (JBoss) ‏ Les applications Web Les JSP Les Servlets Les JavaBeans Le framework Struts ActionForm et Action

Download Presentation

Module Java Expert

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Module Java Expert CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV J2EE

  2. Module Java • Vue d’ensemble de la technologie J2EE • Les serveurs d’applications J2EE (JBoss)‏ • Les applications Web • Les JSP • Les Servlets • Les JavaBeans • Le framework Struts • ActionForm et Action • Le fichier struts-config.xml • Les Enterprise JavaBeans • Les EJB Session • L’accès aux sources de données • Présentation de l’IDE Eclipse et des plugins J2EE • Exercice : gestion d’un catalogue de produits en ligne

  3. Présentation de J2EE • Java 2 Platform, Enterprise Edition est une spécification parue officiellement à la conférence JavaOne en 1998 en même temps que les Enterprise JavaBeans. • Il est né de besoins des entreprises pour développer des applications complexes distribuées et ouvertes sur l’Internet, exploitables dans un Intranet. • Il possède une infrastructure d’ exécution appelée serveurs d’applications

  4. Présentation de J2EE • Java 2 Platform, Enterprise Edition inclut les API fondamentales Java suivantes: • Les Enterprise JavaBeans (EJB) : composants métiers • Les JavaServer Pages (JSP) et les Servlets : composants Web • Java DataBase Connectivity (JDBC) pour l’accès aux bases de données relationnelles.

  5. Présentation de J2EE • Java Transaction Service (JTS) permet d’accéder à un service de transactions réparties. • L’API Java Transaction (JTA) fournit une démarcation des transactions dans une application. • Java Message Service (JMS) : pour accéder à divers services de messageries intra-applications et inter-applications. • Java Naming and Directory Interface (JNDI) fournit un accès aux services de dénomination, DNS, LDAP. • Remote Method Invocation (RMI) sur Internet Inter-ORB Protocol (IIOP) permet une invocation de méthodes à distance au-dessus du protocole IIOP de CORBA.

  6. La plate-forme J2EE • Serveurs d’applications J2EE : • Un serveur d'applications est un serveur sur lequel sont installées les applications utilisées par les usagers. • Ces applications sont chargées sur le serveur d'applications et accédées à distance, souvent par réseau. • Les IHM (Interfaces Hommes-Machines) sont distribuées sur les postes clients ou via un client léger • Dans une infrastructure N-tiers régulière, on peut déployer plusieurs serveurs d'applications: • répartir la charge lorsque le nombre élevé de postes clients est une exigence critique • redonder lorsque leur disponibilité est une exigence critique

  7. La plate-forme J2EE • Les serveurs d'applications sont des logiciels occupant la couche centrale dans une architecture multicouche: • Une architecture classique 3-tiers (postes clients, serveur de données, serveur d'applications) • Une architecture étendue (n-tiers) lorsqu'elle intègre des serveurs d'acquisition (données de terrain, données de process, de back-office, de gateways, de systèmes coopérants externes, etc.).

  8. La plate-forme J2EE • Environnement d'exécution de J2EE • J2EE regroupe un certain nombre d'API, mais il présente également la caractéristique remarquable de faire abstraction de l'infrastructure d'exécution • => Juste une spécification, ensuite implantée par les éditeurs logiciels qui mettent au point les serveurs d'applications • Informatique distribuée "traditionnelle" = souvent problèmes liés non pas à la logique propre à l'application mais à la mise en œuvre de services complexes (threading, transactions, sécurité…)‏ • J2EE introduit la notion de conteneur, et via les API J2EE, il élabore un contrat entre le conteneur et les applications • C'est le vendeur du conteneur qui se charge de mettre en œuvre les services pour les développeurs d'applications J2EE, dans le respect des standards

  9. J2EE dans les architectures à quatre niveaux Tiers Services Web Tiers Métier Tiers Données Tiers Interface Conteneur Applet Navigateur Conteneur EJB Conteneur Web Serveur Web Serveur Métier Serveur de bases de données Internet Bean Enterprise Applet/ HTML Application Web/JSP

  10. Servlets Java Servlets Java Servlets Java Pages JSP Pages JSP Pages JSP Architecture J2EE - Conteneurs • Un conteneur J2EE est un environnement d'exécution chargé de gérer des composants applicatifs et de donner un accès aux API J2EE Conteneur Web Conteneur EJB Entreprise Java Beans Entreprise Java Beans Entreprise Java Beans Clients Applicatifs RMI/IIOP JNDI JTA JDBC JMS JavaMail JAF RMI/IIOP JNDI JTA JDBC JMS JavaMail JAF Serveur d'applications J2EE BDDs et autres ressources

  11. Le container Web • Il fournit un environnement pour le développement, le déploiement et la gestion de l’exécution des Servlets et des JSP. • Les Servlets et les JSP sont regroupés dans des unités de déploiement baptisées applications Web (webapp). • Les WebApp implémentent la logique de présentation d’une application.

  12. Les services du container EJB • L’EJB Container est responsable de la fourniture de services aux beans, quelque soit leurs implémentations : • Le support du mode transactionnel : spécifié lors de la déclaration du bean sans ajout de codes. La granularité pouvant descendre au niveau de la méthode. • La gestion des multiples instances : les EJB sont développés de façon mono-client et exécutée en mode multi-clients: • gestion de pool d’instances, • gestion de cache, • optimisation des accès ressources et données, etc. • La persistance (obligatoire dans la spécification EJB 2.0). • La sécurité par les ACL (Access Control List) au niveau du bean ou pour chaque méthode. • Gestion de versions et administration des EJBs.

  13. Les conteneurs via Java RMI Structure de répertoire qui permet d’obtenir des notions de transparence de la localisation des objets -- le code client utilise un nom pour trouver le serveur Code Client Implémente les “Factories” en utilisant des descriptions des objets activables Service Nommage Daemon Activation Client Stub réseau JVM associée au Groupe d’Activation Server Skeleton Objet Server Une JVM par ActivationGroup. Automatiquement lancée par le daemon d’Activation et peut contenir des serveurs semi-indépendants qui partagent des ressources (comme un pool de connexions) et qui ont les mêmes restrictions de sécurité

  14. Architecture J2EE - Conteneurs • Quelques services des conteneurs • Gestion de la durée de vie des composants applicatifs • Cette gestion implique la création de nouvelles instances de composants applicatifs ainsi que le pooling et la destruction de ces composants lorsque les instances ne sont plus nécessaires • Pooling de ressources • Les conteneurs peuvent à l'occasion mettre en œuvre le rassemblement des ressources, sous la forme, par exemple, de pooling d'objets ou de pooling de connections • Peuplement de l'espace de noms JNDI avec les objets nécessaires à l'utilisation des API de services des conteneurs • Clustering sur plusieurs machines • Répartition de charge ou "Load Balancing" • Sécurité • ...

  15. Développer des applications J2EE • Constitution de composants applicatifs en modules • Un module sert a empaqueter un ou plusieurs composants du même type • L’application J2EE est une archive EAR contenant le descripteur de déploiement (application.xml), les modules Web et EJB • Les modules Web incluent : • Servlets, JSP, TagLibs, JARs, HTML, XML, Images... • Empaquetés dans un fichier d'archive web, WAR • Un WAR s'apparente à un JAR avec en plus un répertoire WEB-INF contenant le descripteur de déploiement web.xml • Les modules EJB incluent : • Les EJB (codes compilés) et leurs descripteurs de déploiement (ejb-jar.xml) • Empaquetés dans une archive JAR • Les modules Java du client : • pour les clients Java, également une archive JAR avec le descripteur de déploiement application-client.xml

  16. Développer des applications J2EE • Constitution de modules en application • Niveau le plus accompli : celui des applications • Appli J2EE = ensemble de modules placés dans un fichier EAR (Entreprise Archive)‏ Appli J2EE (fichier EAR)‏ application.xml Module EJB Module Web Module Java Module Web (fichier WAR)‏ Module Java (fichier JAR)‏ Module EJB (fichier JAR)‏ web.xml application-client.xml ejb-jar.xml Servlet JSP Java Java EJB EJB

  17. Développer des applications J2EE • Déploiement d'applications • Le déploiement consiste à installer et à personnaliser des modules empaquetés sur une plate-forme J2EE • Deux étapes : • Préparation de l'application (recopie des fichiers JAR, WAR, EAR..., génération des classes au moyen du conteneur, puis installation sur le serveur • Configuration de l'application en utilisant les informations spécifiques au serveur d'applications • Création de sources de données, fabriques de connexion...

  18. Les Applications Web J2EE : • les servlets • Les JSP

  19. Environnement d ’exécution Requête (http,…)‏ Script/programme serveur Serveur Web Source de données Réponse Applications Web Serveur Internet/Intranet Client 2e niveau Navigateur Web 3e niveau 1er niveau

  20. Java Servlets • Réponse de Java aux CGI • Programmes s'exécutant sur le serveur Web et retournant des pages Web dynamiques • Peuvent être chargés localement ou dynamiquement à travers le réseau

  21. Moteur de Servlets Thread Créer un pool de threads Thread Instancier la servlet Servlet Appeler la méthode init()‏ Initialisation Affecter une requête à un thread Appeler la méthode service()‏ Requête HTTP 1 Exécution service Affecter une requête à un thread Appeler la méthode service()‏ Requête HTTP 2 Réponse HTTP 1 Exécution service Réponse HTTP 2 Terminer le pool de threads Appeler la méthode destroy()‏ Gestion des servlets

  22. Servlets vs. applets • Les servlets sont le pendant des applets du côté serveur • mais sans interface graphique utilisateur … • elle est limitée à la puissance du langage HTML … • par contre, elles ne sont pas astreintes aux mêmes règles de sécurité que les applets • peuvent établir une connexion avec d’autres clients (RMI, …)‏ • peuvent faire des appels système (utilisation pont JDBC-ODBC)‏ • ou manipuler des ressources locales (sur le serveur), ...

  23. Définition d’une Servlet • Servlets • Les servlets sont des programmes côté serveur permettant d'embarquer la logique applicative dans le processus de réponse aux requêtes HTTP • Elles permettent d'étendre les fonctionnalités du serveur Web afin d'intégrer du contenu dynamique dans HTML, XML et autres langages Web • Avec J2EE, la spécification relative aux servlets a atteint la version 2.4

  24. Modèle de programmation • Une servlet doit implémenter l’interface javax.servlet.Servlet • soit directement, • soit en dérivant d’une classe implémentant déjà cette interface comme (GenericServlet ou HttpServlet )‏ • Cette interface possède les méthodes pour : • initialiser la servlet : init()‏ • recevoir et répondre aux requêtes des clients : service()‏ • détruire la servlet et ses ressources : destroy()‏

  25. Structure de base d'une servlet import javax.servlet.*; public class first implements Servlet { public void init(ServletConfig config)‏ throws ServletException {…} public void service( ServletRequest req, ServletResponse rep)‏ throws ServletException, IOException {…} public void destroy() {…} }

  26. Le cycle de vie 1. la servlet est créée puis initialisée (init())‏ • cette méthode n’est appelée par le serveur qu’une seule fois lors du chargement en mémoire par le moteur de servlet 2. le service du client est implémenté (service())‏ • cette méthode est appelée automatiquement par le serveur à chaque requête de client 3. la servlet est détruite (destroy())‏ • cette méthode n’est appelée par le serveur qu’une seule fois à la fin • permet de libérer des ressources (allouées par init() )‏

  27. Une servlet Web : HttpServlet • Pour faciliter le traitement particulier des serveurs Web, la classe Servlet est affinée en javax.servlet.http.HttpServlet • 2 méthodes remplacent service() de la classe mère : • doGet() : pour les requêtes Http de type GET • doPost() : pour les requêtes Http de type POST • la classe servlet doit obligatoirement contenir l’une ou l’autre de ces 2 méthodes redéfinie, choisie selon le mode d’envoi du formulaire HTML qui l'exécute • service() de HttpServlet appelle automatiquement la bonne méthode en fonction du type de la requête HTTP

  28. Squelette d ’une servlet Http (GET)‏ import javax.servlet.*; import javax.servlet.http.*; public class SimpleServlet extends HttpServlet { public void init(HttpServletConfig c)‏ throws ServletException {…} public void doGet(HttpServletRequest req, HttpServletResponse res)‏ throws ServletException, IOException {…} public void destroy() {…} public String getServletInfo() {…} }

  29. Les méthodes doGet() et doPost()‏ • Utiliser les objets HttpServletRequest et HttpServletResponse passés en paramètres de ces méthodes pour implémenter le service : • HttpServletRequest contient les renseignements sur le formulaire HTML initial (utile pourdoPost()) : • la méthode getParameter() récupère les paramètres d’entrée • HttpServletResponsecontient le flux de sortie pour la génération de la page HTML résultat (getWriter() )‏

  30. Manipuler les servlets Web import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class SomeServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)‏ throws ServletException, IOException { // utiliser "request" pour lire les paramètres et cookies request.getParameter("nom du paramètre"); ... // utiliser " response" pour spécifier la réponse HTTP // (i.e. spécifier le content type, les cookies). PrintWriter out = response.getWriter(); // utiliser l’objet "out" pour envoyer du contenu au browser }

  31. Un exemple 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(); } }

  32. Le descripteur de déploiement : web.xml • se situe dans le répertoire WEB-INF/ de l’application Web <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2.2.dtd"> <web-app> <servlet> <servlet-name>HelloWorld</servlet-name> <servlet-class>fr.ulco.HelloWorld</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloWorld</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> </web-app>

  33. Les Applications Web J2EE : • les servlets • Les JSP

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

  35. JSP • Du java dans une page WWW ! http://www.norsys.fr:8080/jsp/Test.jsp?titre=Les+JSP ... <I> <%= request.getParameter("titre") %> </I> ... • Entre les balises JSP <% … %> • On peut mettre des pages .jsp partout où l’on met des pages HTML • Elles sont converties "au vol" en servlet par le moteur de JSP

  36. Un exemple simple <html><head><title>Un exemple de page JSP</title></head><body> <!-- définit les informations globales a la page --> <%@page language="java" %> <!-- Déclare la variable c --> <%! String c = ""; %> <!-- Scriplet (code java) %> <% for(int i = 0; i < 26; i++){ for(int j = 0; j < 26; j++){ c = "valeur : " + i*j + "<BR>"; %> <%= c %> <% } %> <br> <% } %> </body></html>

  37. Structure d’une page JSP • La structure d'une page JSP est le subtil mélange d'une servlet et de balises HTML, auquel a été ajouté une pincée de code Java entre des balises <% et %> et un zeste de balises XML • 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 : les taglibs!

  38. Règles générales • 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

  39. Directives JSP • Les directives JSP sont des messagers envoyés par le code JSP au conteneur JSP • 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... • Elles ne produisent aucune sortie à envoyer au client • La portée des directives concerne l'intégralité du fichier JSP • Les directives commencent par une balise <%@ et finissent par %> • La syntaxe générale est la suivante : <%@ nomdirective attribut="valeur" attribut="valeur" %>

  40. Directives JSP • On peut utiliser trois directives principales dans les pages JSP • La directive page • la directive include • la directive taglib

  41. Directives JSP • 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 : <%@ page ATTRIBUTS %> • 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...

  42. La directive : page • Valeurs possibles : • <%@ page language="java" • <%@ page import="java.util.*, java.net.*" %> • <%@ page contentType="text/plain" %> • <%@ page session="true|false " %> • <%@ page errorPage="pathToErrorPage" %> • <%@ page isErrorPage="true|false" %> • <%@ page …

  43. Directives JSP • 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 : <%@ include file="nomfichier" %> • Le fichier inclus peut être une ressource statique (tel qu'un fichier HTML) ou une autre page JSP • Exemple : <html> <head> <title>Page de test 1 de la directive include</title> </head> <body> <h1> Page de test 1 de la directive include</h1> <%@ include file="/test.html" %> <%@ include file="/jspTest.jsp %> </body> </html>

  44. Directives JSP • 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 : <%@ taglib uri="tagLibraryURI" prefix="tagPrefix" %> • 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

  45. Eléments de script • 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 %> 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 <% et %> • Peuvent produire une sortie vers le client • Peuvent modifier les objets en interne à l'aide des méthodes

  46. Eléments de script : les déclarations • <%! déclarations %> <%! private int accessCount = 0; private int incrementCount() {return accessCount++;} %> ... <H2>Nombre et liste des articles</H2> Nombre d'articles : <%= incrementCount() %> • définitions des méthodes et variables de classe à utiliser dans toute la page • définit les méthodes jspInit() et jspDestroy()‏

  47. Eléments de script : les scriptlets • <% code Java %> (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)‏

  48. 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 <%= et %> • 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 : <%= expression Java à traiter %>

  49. Eléments de script : les expressions • <%= expression %> Il est <%= new java.util.Date() %> <P> et votre hostname est <%= request.getRemoteHost() %> • permet d’inté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

  50. Actions standard • Les actions standard sont des balises qui affectent l'exécution de la page JSP et la réponse renvoyée au client • Elles doivent être fournies par tous les conteneurs • Une action standard est en réalité une balise incorporée dans une page JSP • 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 • Par exemple, s'il rencontre une action include standard <jsp:include page="myJsp.jsp" flush="true" />

More Related