J2EE Dr. Mohammed ERRITALI. Architecture 1-tiers Présentation Traitement données Navigateur Serveur Web Systèm e de fichiers.

Slides:



Advertisements
Présentations similaires
Cours 6 : XML et les architectures N-tiers – Tier Applicatif
Advertisements

Servlet JAVA.
LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet
SERVLETS PRESENTATION
Struts.
Les Servlets Présentation Cycle de vie Principe de fonctionnement
IFT 6800 Atelier en Technologies d’information Chapitre 5 Introduction aux Servelets & JSP.
JAVA EE 5 Q.R. C’est quoi une servlets?
Commerce électronique Automne  Introduction  Création du panier d’achats  Migration du panier d’achats  Conclusion.
GCstar Gestionnaire de collections personnelles Christian Jodar (Tian)
Logiciel Assistant Gestion d’Événement Rémi Papillié (Chef d’équipe) Maxime Brodeur Xavier Pajani Gabriel Rolland David St-Jean.
Système de gestion d'entrées pour un cinéma Scanvion Michel – Etudiant 4.
Séminaire EOLE Dijon Octobre 2008 Eole SSO.
Créer un site Web avec Eva Spip Première approche B. Gugger – Mars 2006 – Département RTC.
Introduction aux technologies du Web Mercredi 12 décembre 2007 Patrice Pillot
1 Y a-t-il une place pour Opensocial dans l'enseignement supérieur ? David Verdin RENATER JRES - Toulouse – novembre 2011.
Cours de HTML suite 3. Sommaire...  Les formulaires. Les formulaires.  Structure basique du formulaire, balise. Structure basique du formulaire, balise.
Pour plus de modèles : Modèles Powerpoint PPT gratuitsModèles Powerpoint PPT gratuits Page 1 Free Powerpoint Templates Client service architecteur réseaux.
Communication client-serveur
I- ANALYSE DU BESOIN / Plan
Qu’est-ce un serveur de messagerie?
Asynchronous Javascript And Xml
Environnement de développement des BD
Comprendre l’environnement Web
Environnement du développement de BD ORACLE REPORTS 10g
Utiliser le dossier Mon EBSCOhost
Installation et Configuration Internet Information Server (IIS 5)
Les fonctions.
Les bases de données et le modèle relationnel
MVC et applications Web
Sécurité - Configuration de -
fonctionnalités iiS iis
Comment fonctionne RADIUS?
Asynchronous Javascript And Xml
PROGRAMMATION INFORMATIQUE D’INGÉNIERIE II
Août 2009.
Introduction BD TABLES ET DONNÉES champs OU données, types de données
Documentation technique (Linux)
Windows Server 2012 Objectifs
HTTP DNS NTP FTP R231 RJ45 definition HTTP DNS NTP FTP R231 RJ45.
Structure D’une Base De Données Relationnelle
Modélisation avec UML 2.0 Partie II Diagramme de classes.
Cours 8 : Les Web Services et XML-RPC Février Version 1.0 -
A. DAAIF ENSET Mohammedia Université Hassan II Casablanca.
Présentation de frameworks J2EE 1 LIU Sizhao LUO Xin MALICK MANDENGUE Serge.
Service web Réalise par: Latifa Gamoun Mariem jridi Majdouline Hassni Service web Réalise par: Latifa Gamoun Mariem jridi Majdouline Hassni 1.
Message Oriented Middleware MOM - Beghdad abdelkrim -abass youcef.
Les protocoles de la couche application Chapitre 7.
I Copyright © 2004, Oracle. Tous droits réservés. Introduction.
Bases de données sous Access. Initiation aux bases de données  Structure d’une base de données.
Auditeur: Léonardo AMODIO Cours: NFE107
Cours 10 : Les Web Services et WSDL Février Version 1.0 -
Catherine Cyrot - bibliothèques numériques - Cours 5
La gestion des habilitations par le partenaire
Les classes et les objets
Messagerie (Orange - Gmail)
Atos, Atos et le poisson, Atos Origin et le poisson, Atos Consulting ainsi que le poisson seul sont des marques déposées d'Atos Origin SA. © 2006 Atos.
Centre Universitaire de MASCARA Présenté par M. H.BENAOUDA Melle F.ZENAK Encadrer par M. A.YAGOUBI.
FRAMEWORKS : XMLBEANS / STRIPES
Notions d'architecture client-serveur. Présentation de l'architecture d'un système client/serveur Des machines clientes contactent un serveur qui leur.
A la découverte du courrier électronique.
YII Yes It Is !.
Catherine Cyrot - bibliothèques numériques - Cours 5
Contenu Systèmes de test parallèles Multithreading Synchronisation
Qu’est ce qu’une page web? Comment fonctionne un site web?
App Inventor trucs Afficher une image depuis le Web ou Google Drive.
DONNÉE DE BASE QM Manuel de formation. Agenda 2  Introduction  Objectif de la formation  Données de base QM: Caractéristique de contrôle Catalogue.
Site web, Ce qu’il faut savoir ?
Les Commandes de base Linux. 1 L’aide sur les commandes Linux ◦ help : obtenir de l’aide pour une commande interne du shell. Elle permet aussi d'afficher.
Internet Stage – Semaine 5.
Transcription de la présentation:

J2EE Dr. Mohammed ERRITALI

Architecture 1-tiers Présentation Traitement données Navigateur Serveur Web Systèm e de fichiers

Architecture 2-tiers Présentation Traitement données Navigateur Serveur Web Base de données

Architecture 3-tiers Présentation Traitement données Navigate ur Serveur Web Base de données Serveur d’application s

Le modèle d’application de J2EE

La communications entre le client et le serveur

Les « containers » J2EE  Les applications multi-tiers sont difficiles à écrire Beaucoup de code entrelacé pour gérer les transactions, l’état, le pooling des ressources, etc.  Container Sert d’interface entre les fonctionalités de bas niveau qui sont spécifiques à une plateforme  Avant de pouvoir exécuter un composant web, EJB ou d’application client L’assembler dans un module J2EE Le déployer dans son conteneur

Types de containers

 Le container serveur J2EE Fournit les containers web et EJB  Le container EJB Gère l’exécution des EJB  Le container Web Gère l’exécution des pages JSP et des servlets  Le container d’applets Browser + Java plug-in

Exemples de conteneurs Serveurs J2EE JBoss : Glassfish : JOnAS: Oracle AS : Conteneur Web Tomcat : Jetty : Conteneur EJB3 EasyBeans:

API J2EE  J2EE (Java 2 Edition Enterprise) propose les API : L'invocation de méthodes distantes : RMI, CORBA, Web Services L'accés aux bases de données relationnelles : JDBC L'accés aux annuaires et services de nommage : JNDI L'utilisation du XML : DOM et SAX HTML dynamique et traitement de requêtes HTTP : JSP et Servlet La gestion du Mail : Java Mail La gestion des messages : Java Message Service La gestion des composants : EJB La connection à des ERP : Java Connector La gestion des droits d'accès : Java Authentication and Authorization Service

Servlets

Rappel :LE PROTOCOLE HTTP  HTTP :HyperText Tranfert Protocol (RFC 1945 et 2068) Protocole de rapatriement des documents Protocole de soumission de formulaires  Fonctionnement (très simple en HTTP/1.0) Connexion demande (GET, POST) d’un document renvoi du document (status=200) ou d’une erreur déconnexion

Dialogue HTTP  Types de dialogue Récupération d’un document  méthode GET Soumission d’un formulaire  méthodes GET ou POST Envoi de Document et Gestion de Site  méthodes PUT, DELETE  Méthode HEAD (Récupération des infos sur le document).

Le client envoie la requête : Méthode POST Post /Nom_Script HTTP/1.0 host: HTTP_ACCEPT_LANGUAGE : fr User-Agent : Mozilla/4.0 *** saut de ligne *** login=Value1& pass=Value2 & Var3=Value3 Post /Nom_Script HTTP/1.0 host: HTTP_ACCEPT_LANGUAGE : fr User-Agent : Mozilla/4.0 *** saut de ligne *** login=Value1& pass=Value2 & Var3=Value3 Entête de la requête corps de la requête Méthode,chemin,version Nom de domaine Code de la langue Type et version du navigateur Paramètres des différents champs du formulaire.

Le client envoie la requête : Méthode GET GET /Nom_Script?login=val1&pass=val2&…. HTTP/1.0 host: HTTP_ACCEPT_LANGUAGE : fr User-Agent : Mozilla/4.0 GET /Nom_Script?login=val1&pass=val2&…. HTTP/1.0 host: HTTP_ACCEPT_LANGUAGE : fr User-Agent : Mozilla/4.0 Entête de la requête corps de la requête est vide

Le Serveur retourne la réponse : HTTP/ OK Date : Wed, 05Feb02 15:02:01 GMT Server : Apache/ Last-Modified : Wed 02Oct01 24:05:01GMT Content-Type : Text/html Content-legnth : 4205 *** saut de ligne *** …. HTTP/ OK Date : Wed, 05Feb02 15:02:01 GMT Server : Apache/ Last-Modified : Wed 02Oct01 24:05:01GMT Content-Type : Text/html Content-legnth : 4205 *** saut de ligne *** …. Entête de la réponse corps de la réponse Ligne de Status Date du serveur Nom du Serveur Dernière modification Type de contenu Sa taille Le fichier que le client va afficher

Introduction aux servlets  Une servlet est une classe Java, exécutée par un moteur de servlets, fonctionnant du côté serveur au même titre que les langages de script côté serveur tels que ASP ou bien PHP  Les servlets permettent donc de gérer des requêtes HTTP et de fournir au client une réponse HTTP dynamique.

Architecture du package servlet.jar  Toutes les servlets implémentent directement ou indirectement l'interface Servlet, en dérivant une classe qui l'implémente: c'est-à-dire généralement la classe HttpServlet, elle-même issue de GenericServlet.  La classe GenericServlet (javax.servlet.GenericServlet) définit une classe abstraite (implémentation de base de l'interface Servlet). Servlet GenericSrvlet service() HttpServlet doPost() doGet() NotreServlet doPost() doGet()

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

Cycle de vie d’une servlet  Le serveur crée un pool de threads auxquels il va pouvoir affecter chaque requête  La servlet est chargée au démarrage du serveur ou lors de la première requête  La servlet est instanciée par le serveur  La méthode init() est invoquée par le conteneur  Lors de la première requête, le conteneur crée les objets Request et Response spécifiques à la requête  La méthode service() est appelée à chaque requête dans un nouveau thread. Les objets Request et Response lui sont passés en paramètre  Grâce à l'objet request, la méthode service() va pouvoir analyser les informations en provenance du client  Grâce à l'objet response, la méthode service() va fournir une réponse au client  La méthode destroy() est appelée lors du déchargement de la servlet, c'est-à-dire lorsqu'elle n'est plus requise par le serveur. La servlet est alors signalée au garbage collector.

Fonctionnement d’une servlet  Lorsqu'une servlet est appelée par un client, la méthode service() est exécutée. Celle-ci est le principal point d'entrée de toute servlet et accepte deux objets en paramètres: L'objet HttpServletRequest encapsulant la requête du client, c'est-à-dire qu'il contient l'ensemble des paramètres passés à la servlet (informations sur l'environnement du client, cookies du client, URL demandée,...) L'objet HttpServletResponse permettant de renvoyer une réponse au client (envoyer des informations au navigateur).

Développement d’une servlet  Afin de développer un servlet fonctionnant avec le protocole HTTP, il suffit de créer une classe étendant HttpServlet (qui implémente elle-même l'interface Servlet).  La classe HttpServlet (dérivant de GenericServlet) permet de fournir une implémentation de l'interface Servlet spécifique à HTTP.  La classe HttpServlet redéfinit la méthode service en lisant la méthode HTTP utilisée par le client, puis en redirigeant la requête vers une méthode appropriée.  Les deux principales méthodes du protocole HTTP étant GET et POST, il suffit de redéfinir la méthode adéquate afin de traiter la requête :

Développement d’une servlet  Si la méthode utilisée est GET, il suffit de redéfinir la méthode : public void doGet( HttpServletRequest request, HttpServletResponse response )  Si la méthode utilisée est POST, il suffit de redéfinir la méthode : public void doPost( HttpServletRequest request, HttpServletResponse response )

HttpServletRequest MéthodeDescription String getMethod() Récupère la méthode HTTP utilisée par le client String getHeader(String Key) Récupère la valeur de l'attribut Key de l'en- tête String getRemoteHost() Récupère le nom de domaine du client String getRemoteAddr() Récupère l'adresse IP du client String getParameter(String Key) Récupère la valeur du paramètre Key (clé) d'un formulaire. Lorsque plusieurs valeurs sont présentes, la première est retournée String[] getParameterValues(String Key) Récupère les valeurs correspondant au paramètre Key (clé) d'un formulaire, c'est-à-dire dans le cas d'une sélection multiple (cases à cocher, listes à choix multiples) les valeurs de toutes les entités sélectionnées Enumeration getParameterNames() Retourne un objet Enumeration contenant la liste des noms des paramètres passés à la requête String getServerName() Récupère le nom du serveur String getServerPort() Récupère le numéro de port du serveur

HttpServletResponse MéthodeDescription String setStatus(int StatusCode)Définit le code de retour de la réponse void setHeader(String Nom, String Valeur)Définit une paire clé/valeur dans les en-têtes void setContentType(String type ) Définit le type MIME de la réponse HTTP, c'est-à-dire le type de données envoyées au navigateur void setContentLength(int len)Définit la taille de la réponse PrintWriter getWriter() Retourne un objet PrintWriter permettant d'envoyer du texte au navigateur client. Il se charge de convertir au format approprié les caractères Unicode utilisés par Java ServletOutputStream getOutputStream() Définit un flot de données à envoyer au client, par l'intermédiaire d'un objet ServletOutputStream, dérivé de la classe java.io.OutputStream

Première Servlet package web; import java.io.*; import javax.servlet.ServletException; import javax.servlet.http.*; public class FirstServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println(" "); out.println(" Titre "); out.println(" "); out.println("Ma première servlet"); out.println(" "); out.close(); }

Déploiement d’une servlet  Pour que le serveur j2ee reconnaisse une servlet, celle-ci doit être déclarée dans le fichier web.xml qui se trouve dans le dossier WEB-INF.  Le fichier web.xml s’appelle le descripteur de déploiement de Servlet.  Ce descripteur doit déclarer principalement les éléments suivant : Le nom attribué à cette servlet La classe de la servlet Le nom URL à utiliser pour faire appel à cette servlet via le protocole HTTP.

web.xml FirstServlet FirstServlet /fs 30

A vous de jouer TP

Suivi de session  Le protocole HTTP est un protocole sans état  impossibilité alors de garder des informations d’une requête à l’autre (identifier un client d’un autre)  Obligation d’utiliser différentes solutions pour remédier au problème d’état Cookies persistants session

Cookies persistants : Cookie  Un cookie est une information envoyée au navigateur (client) par un serveur WEB qui peut ensuite être relue par le client  lorsqu’un client reçoit un cookie, il le sauve et le renvoie ensuite au serveur chaque fois qu’il accède à une page sur serveur  La valeur d’un cookie pouvant identifier de façon unique un client, ils sont souvent utilisés pour le suivi de session  Les cookies ont été introduits par la première fois dans Netscape Navigator

 L’API Servlet fournit la classe javax.servlet.http.Cookie pour travailler avec les Cookies Cookie(String name, String value): construit un cookie String getName(): retourne le nom du cookie String getValue(): retourne la valeur du cookie setValue(String new_value): donne une nouvelle valeur au cookie setMaxAge(int expiry): spécifie l’âge maximum du cookie

 Pour la création d’un nouveau cookie, il faut l’ajouter à la réponse (HttpServletResponse) addCookie(Cookie mon_cook): ajoute à la réponse un cookie  La Servlet récupère les cookies du client en exploitant la réponse (HttpServletRequest) Cookie[] getCookies(): récupère l’ensemble des cookies du site

 Code pour créer un cookie et l’ajouter au client  Code pour récupérer les cookies

Exemple : gestion de session (identifier un client d’un autre)par l’intermédiaire des cookies persistants

Session : HttpSession  Solution 2: utilisation de l’API de suivi de session HttpSession  Méthodes de création liées à la requête (HttpServletRequest) HttpSession getSession() : retourne la session associée à l’utilisateur HttpSession getSession(boolean p) : création selon la valeur de p

 Gestion d’association (HttpSession) Enumeration getAttributNames() : retourne les noms de tous les attributs Object getAttribut(String name): retourne l’objet associé au nom setAttribut(String na, Object va): modifie napar la valeur va removeAttribut(String na): supprime l’attribut associé à na  Destruction (HttpSession) invalidate() : expire la session logout() : termine la session

Exemple : suivi de session pour un compteur

Collaboration de Servlets  Les Servlets s’exécutant dans le même serveur peuvent dialoguer entre elles  Deux principaux styles de collaboration:  partage d’information : un état ou une ressource. Exemple : un magasin en ligne pourrait partager les informations sur le stock des produits ou une connexion à une base de données  Partage du contrôle: une requête. Réception d’une requête par une Servlet et laisser l’autre Servlet une partie ou toute la responsabilité du traitement

 La collaboration est obtenue par l’interface ServletContext  Une Servlet retrouve le ServletContext de son application web par un appel à getServletContext()  Exemples de méthodes:  void setAttribute(String name, Object o) : lie un objet sous le nom indiqué  Object getAttribute(String name) : retrouve l’objet sous le nom indiqué  Enumeration getAttributeNames() : retourne l’ensemble des noms de tous les attributs liés  void removeAttribute(String name) : supprime l’objet lié sous le nom indiqué

Collaboration de Servlets : partage du contrôle  Deux types de distribution  Distribuer un renvoi : une Servlet peut renvoyer une requête entière  Distribuer une inclusion : une Servlet peut inclure du contenu généré  Les avantages sont  La délégation de compétences  Architecture logicielle MVC (Servlet = contrôle et JSP = présentation)

 Le support de la délégation de requête est obtenu par l’interface RequestDispatcher  Une Servlet obtient une instance sur la requête  RequestDispatcher getRequestDispatcher(String path): retourne une instance de type RequestDispatcher par rapport à un composant  Un composant peut-être de tout type : Servlet, JSP, fichier statique, …  path est un chemin relatif ou absolu ne pouvant pas sortir du contexte  Pour distribuer en dehors du contexte courant il faut :  Identifier le contexte extérieur (utilisation de getContext())  Utiliser la méthode getRequestDispatcher(String path)

Partage du contrôle : distribuer un renvoi  La méthode forward(...)de l’interface RequestDispatcher renvoie une requête d’une Servlet à une autre ressource sur le serveur  void forward(ServletRequest req, ServletResponse res): redirection de requête

Exemple : distribuer un renvoi de Emetteur à Recepteur

Partage du contrôle : distribuer une inclusion  La méthode include(…)de l’interface RequestDispatcher inclut le contenu d’une ressource dans la réponse courante  La différence avec une distribution par renvoi est :  la Servlet appelante garde le contrôle de la réponse  elle peut inclure du contenu avant et après le contenu inclus  Possibilité de transmettre des informations lors de l’inclusion:  en attachant une chaîne d’interrogation (au travers de l’URL)  en utilisant les attributs de requête via la méthode setAttribute(...)

Exemple : permet de distribuer une inclusion

A vous de jouer TP