1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Chapitre 1 Introduction à JEE

abdelouafiSep 21, 2016

    1. abdelouafi

      abdelouafi Administrator Staff Member

      Messages:
      267
      Likes Received:
      8
      Trophy Points:
      18
      Joined
      Sep 13, 2016
      La plateforme java se compose de 3 éditions : l’Edition Standards J2SE, l’Edition Entreprise JEE et l’Edition Micro J2ME.

      J2SE : Fait la base de la plateforme Java, elle est utilisée pour développer essentiellement les applications de bureau et les applets. Elle comporte un ensemble de packages comme : java.io, java.awt, javax.swing, java.rmi, java.util et biensûr d’autres.

      Les différentes distributions de Java:
      upload_2016-9-21_13-19-9.png

      JEE : Cette édition est basée sur J2SE et inclut un nombre de technologies comme les servlets, Java Server Pages et Entreprise Java Beans. Elle est utilisée essentiellement pour développer les applications d’entreprise qui tournent côté serveur (Architecture n-tiers).

      J2ME : Cette édition est une version légère de J2SE conçue pour les dispositifs qui possèdent une mémoire et une unité de calcul faible comme les téléphones, les PDA…etc.

      Normalement l’apprentissage de la technologie JEE peut être subdivisé en trois grandes étapes:

      1- Développement des composants web : Servlets, JSP, Conteneurs de Servlets, framework de présentation: Struts, JSF, Spring MVC …etc.

      2- Développement des composant métier : EJB, Persistance : Hibernate, topLink …etc.

      3- Conception des architectures logiciels .

      Dans cette première partie on va traiter la première étape.

      Historique:
      upload_2016-9-21_13-19-41.png

      Préparation de l’environnement de développement:
      Pour commencer à développer des composant web à base des Servlets vous devez disposer des outils suivants :

      1- JDK : téléchargeable sur java.sun.com

      2- La documentation du JDK et la documentation de l’API des Servlets

      3- Un conteneur de Servlets : de préférence Tomcat

      6- Un IDE : de préférence éclipse Galileo.

      7- Une copie de la spécification des servlets (JSR 154).

      C’est quoi une Servlet :
      Comme son nom l’indique une servlet est une entité qui s’exécute côté serveur.

      Les tâches du serveur :

      Chaque serveur qui offre des services aux clients distants doit accomplir deux tâches principales :

      1- gérer les requêtes des clients

      2- créer une réponse à poster aux clients

      La première tâche nécessite de la programmation au niveaux des sockets, extraction des informations de la requête client et l’implémentation des protocoles client-serveur comme FTP et HTTP.

      La deuxième tâche varie d’un service à un autre, par exemple dans le cas d’un serveur HTTP qui héberge des applications web, la réponse est créer dynamiquement, la logique métier change en permanence, chaque client exige une vue personnalisée (langue, symbole monétiques, temps local…etc.)

      On ne peux pas développer un programme sous forme d’un seul module qui gère touts ces tâches car un simple changement dans la logique métier va entraîner la modification de tout le programme.( et si le développeur a déjà quitter l’entreprise).

      Une meilleure conception consiste à subdiviser le code en deux parties : une qui gère la communication réseau et l’implémentation du protocole HTTP. L’autre partie s’occupe de la logique métier. Et définir une interface standard entre les deux parties. Ce genre de séparation entre les deux parties nous permet de modifier le code de la logique métier sans affecter la première partie.

      Cette architecture est traditionnellement implémentée dans les serveurs HTTP comme apache en utilisant « Common Gatway Interface » CGI

      La première partie est représentée par le serveur web et la deuxième par les script CGI : PHP, ASP, Perl...etc.

      Même que les CGI offrent une conception modulaire ils présentent une limitation majeure car chaque requete client impose la création det la destruction d’un processus pour exécuter les scriots CGI. C’est une limitation majeure surtout si le script établi des connexion à une base de donnée.

      Cette limitation peut être surmontée en utilisant des extensions de serveur : se sont des modules séparés qui sont chargé une seule fois dans la mémoire et initialisés lors du démarrage du serveur.

      Dans les autres plateforme (non Java) ces extensions sont écrites en utilisant des API native offerte par le vendeur du serveur, par exemple:

      Le serveur Netscape : Netscape Server Application Programming Interfece (NSAPI).

      Microsoft Internet Information Server IIS : Internet Server Application Programming Interfece (ISAPI).

      Java : Servlets API.

      Conteneur de Servlets:
      Les serveurs web java utilisent un module séparé pour charger et exécuter les servlets. Ce module dédié à la gestion des servlets s’appelle le conteneur des servlets ( Servlet Container / Servlet Engine).
      upload_2016-9-21_13-20-44.png

      Tomcat:
      Plusieurs conteneurs de servlets existe dans le marché :Tomcat (Apache), Resin (Caucho Technology), Jrun (Macromedia), WebLogic (BEA), et WebSphere (IBM). WebSphere et WebLogic sont plus que des simples conteneurs de servlets, ils supportent les EJB et JMS et d’autres technologies JEE.

      Tomcat est un conteneur de servlets développé sous le projet Jakarta (ASF : Apache Software Fondation). Nous avons choisis Tomcat pour plusieurs raisons :

      -Gratuit et open source
      -Implémente la spécification des servlets 2.5 et JSP 2.1
      -Il contient un serveur web (Standalone)

      Première Servlet:
      Dans cette exemple on va voir en bref les quatre étapes de base nécessaires pour développer et exécuter une servlets : codage, compilation, déploiement et exécution.

      1- codage : voir la diapositive suivante

      2- compilation : eclipse permet de gérer la compilation de manière automatique pour les projets de taille moyenne, pour les projets de grandes tailles prévoir un outil de gestion de build comme Ant ou Maven2.0 .

      3- déploiement : le déploiement se fait en deux étapes :

      a- création de la structure des répertoires

      b- création du descripteur de l’application web : web.xml

      4- exécution

      upload_2016-9-21_13-21-22.png

      Descripteur de déploiment:
      upload_2016-9-21_13-21-34.png

      Exercice 1:
      Récrire la servlet PremiereServlet avec l’éditeur Bloc-note

      Compiler le code source en utilisant javac offert avec JDK

      Créer l’archirecture des répertoires d’une application web

      Définir le descripteur de l’application web (web.xml)

      Lancer Tomcat et copier votre application dans le répertoire de déploiement de Tomcat

      Exécuter la servlet en tapant une url dans le navigateur

      L’API des Servlets:
      La spécification des Servlets 2.4 JSR154 offre un Framework de communication entre les servlets et leurs conteneur indépendamment de la plateforme et du conteneur des servlets. Ce framework se compose d’un ensemble de classes et interfaces (Servlet API).

      La tâche des développeurs de servlets se résume dans la maîtrise de cette API, car tous les conteneurs des servlets respectent la spécification JSR154 et donc offrent une implémentation de l’API des Servlets.

      L’API des Servlets comporte 2 packages : javax.servlet et javax.servlet.http

      Le premier package contient des interfaces et des classes génériques indépendantes de tout protocole parmi lesquelles on peut citer :

      javax.servlet.Servlet : Cette interface forme le cœur de l’API. Chaque servlet doit implémenter cette interface directement ou indirectement, elle définit 5 méthodes :

      init() : cette méthode est appelée par le conteneur des servlets pour effectuer des opérations d’initialisation.



      L’API des Servlets:
      Service() : cette méthode est appelée par le conteneur des servlets pour servir chaque requête du client.

      Destroy() : cette méthode est appelée par le conteneur des servlets pour libérer toutes les ressources utilisées par la servlet.

      getServletConfig : retourne des informations concernant les paramètres d’initialisation et du démarrage de la servlet, elle retourne un objet de type ServletConfig encapsulant tous les paramètres d’initialisation de la servlet.

      getServletInfo : : retourne des informations sur la servlet comme l’auteur la version et les droit d’auteur.

      javax.servlet.GenericServlet : C’est une classe abstraite utilisée comme adaptateur de l’interface javax.servlet.Servlet. Elle ajoute d’autres méthodes pour la journalisation.

      javax.servlet.ServletRequest : Cette interface représente la requête envoyée par le client indépendamment de tout protocole.


      javax.servlet.ServletResponse : Cette interface représente la réponse envoyée par le serveur, elle définit des méthodes qui permettent d’envoyer une réponse au client indépendamment de tout protocole.

      javax.servlet.http package :

      Ce package offre les fonctionnalités de base pour les servlets qui traitent les requêtes http. Les interfaces et les classes de ce package étendent celles du package javax.servlet, parmi lesquelles on peut citer :

      javax.servlet.http.HttpServlet :

      C’est une classe abstraite qui étend la classe GenericServlet. Elle définit une nouvelle méthode

      protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException.

      Dans l’exemple précédent nous avons étendu cette classe et nous avons redéfinit la méthode service().

      javax.servlet.http.HttpServletRequest : Cette interface représente la requête envoyée par le client selon le protocole http. Elle est utilisé pour extraire des informations comme les entêtes http, les cookies et les paramètres envoyés par le client.

      javax.servlet.http.HttpServletResponse : Cette interface représente la réponse envoyée par le serveur, elle définit des méthodes qui permettent d’envoyer une réponse au client selon le protocole http. Elle définit des méthodes pour personnaliser l’entête de la réponse et spécifier le type du contenu envoyé…etc.

      Avantages et inconvénients de L’API des Servlets:
      + Flexibilité : chaque fois qu’on veut ajouter une nouvelle fonctionnalité au serveur il suffit d’ajouter une nouvelle servlet et la déployer dans le serveur.

      + Séparation des responsabilités : Le serveur se charge de la connexion réseau et l’implémentation des protocoles tandis que l’interprétation des requêtes clients est une tâche délégué au servlets.

      + Java API : on tire profit d’une api riche adopté à large échelle dans l’industrie du logiciel.

      + Portabilité : WORA « write once, run anywere ».

      -Respect strict de la spécification par les conteneur de servlets.
      -La plupart des conteneur des servlets support seulement le protocole http (manque de support du ftp, smtp, et les protocoles propriétaires). Car le spécification impose seulement l-implémentation du protocole http.


      Rappel : Applications web et Protocole http:
      Les applications web
      Une application web est une application accessible via le web. Par exemple un site qui offre un service de messagerie électronique est une application web.

      L’avantage des applications web c’est qu’elles sont accessible partout, il suffit d’avoir un navigateur et une connexion internet.

      -Pas de mises à jours
      -Rien à installer sur le poste client
      Une application web se compose de plusieurs composantes web : servlets, jsp, html, images …etc.

      Chaque application web java est décrite par un descripteur de déploiement, c’est un document xml nommé web.xml contenant la description de tout les composants dynamiques de l’application wab. On y spécifie une entrée pour toute servlet utilisée dans l’application.

      L’objectif de ce cours et de vous montrer comment développer des application web en utilisant la technologie JEE

      Les serveurs d’applications:
      Une application web réside dans un serveur d’application qui offre les services de bas niveau comme l’implémentation des protocoles de communication avec les clients en plus d’un conteneur de servlets un serveur d’application doit offrir d’autres composants JEE comme un conteneur d’EJB, un serveur JNDI, un serveur JMS et autres selon les besoins fonctionnelles de l’application web.

      Exemples de serveurs d’applications : Glassfish (SUN), WebLogic(BEA), WebSphere(IBM).

      Tomcat n’est un pas un serveur d’application c’est un simple conteneur de servlets.

      Protocole HTTP:
      HTTP est un protocole sans état basé sur les requêtes-réponses. Le client envoie une requête pour obtenir une ressource et le serveur une réponse http contenant la ressource désirée.

      upload_2016-9-21_13-23-38.png


      Le client ouvre une connexion avec le serveur, envoie une requête http, le client reçoit la réponse http du serveur et ferme la connexion. Ce protocole est qualifié comme protocole sans état car une fois le serveur


      Structure d’une requête http:
      le serveur envoie la réponse il oublie le client. C’est-à-dire la réponse à une requête ne dépond pas des requêtes antécédentes du client. Chaque requête est une nouvelle requête.

      Les concepts de base du HTTP :

      Un message http représente une requête du client vers le serveur ou une réponse du serveur vers le client dont le format est comme suit :

      Une ligne initiale : spécifie l’objet du message

      Entête : spécifie des méta-informations comme la taille, le type l’encodage du contenu.

      Une ligne vide : séparateur

      Contenu « optionnel » :le contenu du message.

      Structure d’une requête http :

      Un message envoyé du client vers le serveur s’appelle une requête http.

      Méthodes HTTP:
      La ligne initiale : composée de parties.

      1- le nom de la méthode http: GET, POST, HEAD…etc.

      2- URL

      3- version du protocole http

      Exemple : GET /premiereServlet/index.fc HTTP/1.1

      GET /premiereServlet/index.fc?catid=61 HTTP/1.1

      GET :

      C’est une méthode http utilisée dans une requête client pour obtenir une ressource statique ou dynamique. Dans le cas d’une ressource dynamique les paramètres sont codés dans l’url sous la forme cle1=valeur1& cle2=valeur2&…

      HEAD

      Une requête HEAD est utilisée pour obtenir des méta-informations d’une ressources identifiée par l’url


      HEAD est généralement utilisée pour connaître la dernière date de modification d’une ressource avant d’obtenir cette ressource par GET ou POST (cache du navigateur).

      POST :

      La méthode Post sert à envoyer des données au serveur afin de les traiter, les données sont envoyées dans le contenu du message.

      Exemple :

      Ligne initiale à POST /premiereServlet/index.fc HTTP/1.1

      Entête à user-Agent : Mozilla/3/0/10

      Content-Type : application/x-www-form-urlcoded

      Content-length : 8

      Ligne vide à

      contenu à catid=61

      ont-size:18.0pt;font-family:"Comic Sans MS";mso-ascii-font-family:"Comic Sans MS"; mso-fareast-font-family:+mn-ea;mso-bidi-font-family:+mn-cs;color:black; mso-color-index:1;language:fr'>


      Structure d’une réponse http:
      Une réponse http est un message envoyé par le serveur vers le client.

      La ligne initiale : dans la cas d’une réponse s’appelle la ligne du statut, elle est composée de trois parties juxtaposées et séparées par des espaces comme suit : version_http code_statut description_code

      Exemple :

      HTTP/1.1 200 OK

      Date : wed, 13 May 2009 14:47:51 GMT

      Content-Type : test/html

      Content-Length : 115

      <html> <head> <title> ma premiere servlet </title>

      </head>

      <body>

      Bonjour c'est ma première Servlet

      </body>

      </html>

      Conclusion:
      Dans ce premier chapitre nous avons introduit les concepts de base des servlets et des conteneurs de servlets, nous avons réalisé un exemple simple qui affiche du texte sur le navigateur, nous avons ensuite donné une vue d’ensemble de l’API des servlets en présentant ses principales classes et interfaces et nous avons finalement rappelé les concepts de base du protocole http.

      Pour résumé : une servlet est une classe java qui s’exécute côté serveur, elle peut être utilisée par un serveur pour étendre ses fonctionnalités de manière flexible et pour générer les sorties désirées de manière dynamique en réponse à des requêtes que les clients envoient suivant un protocole donné.

      Durant tout ce cours on va centrer notre étude sur les servlets http, c’est le protocole qui vous intéresse le plus en tant que des développeurs de composants web.
       
      Loading...

Share This Page

Share