Cours 6 : XML et les architectures N-tiers – Tier Applicatif Les technologies XML Cours 6 : XML et les architectures N-tiers – Tier Applicatif Janvier 2009 - Version 1.0 - (-)
TIER APPLICATIF : SERVLETS Exemple de servlets : ExampleServlet.java import javax.servlet.* ; import javax.servlet.http.* ; import java.io.* ; 1°) Importation des packages Servlet, servlet.http, et io public class ExampleServlet extend HttpServlet { 2°) Héritage de HttpServlet public void doGet ( HttpServletRequest requete, HttpServletRespons reponse ) throws ServletException, IOException { 3°) Surcharge de la méthode doGet ou de la méthode doPost PrintWriter out ; out = reponse.getWriter( ) ; out.println ("<html><head></head>") ; out.println ("<body>Salut</body></html>") ; out.close( ); } 4°) Ecriture des données dans l’objet reponse
TIER APPLICATIF : SERVLETS L’API JSDK : Interfaces et classes sont réparties dans 2 packages : javax.servlet qui contient des composants pour développer des servlets génériques indépendantes d'un protocole javax.servlet.http pour développer des servlets qui repose sur le protocole http utilisé par les serveurs web. Version 1.2 de J2EE
Servlets Javax.servlet.genericServlet définie la méthode “service” avec “request” et “response”
TIER APPLICATIF : SERVLETS Caractéristiques d’une servlet : Héritage de HttpServlet (pour le protocole HTTP), qui hérite elle-même de la servlet GenericServlet (qui elle est indépendante d’un quelconque protocole). Surcharge de la méthode doGet() ou doPost( ) qui prend en paramètre deux objets de type HttpServletRequest et HttpServletResponse. Lorsqu’une servlet est invoquée par un client, elle est tout d’abord chargée en mémoire puis instanciée, si cela n’avait pas déjà été fait (une servlet peut être chargée soit lors de la première requête faite par un client, soit de manière automatique au démarrage du serveur).
TIER APPLICATIF : SERVLETS Caractéristiques d’une servlet : Une servlet s’exécute dans un thread (processus léger) et non dans un véritable processus. Après son exécution, une servlet n’est pas détruite : elle reste en mémoire en attendant d'autres requêtes en provenance de navigateurs clients. Ces différents mécanismes permettent d’économiser les ressources allouées et d’améliorer le temps d’exécution d'une requête. Seul un changement du code de la servlet nécessite sa destruction. Il n’est cependant pas nécessaire de redémarrer le serveur pour pouvoir recharger la servlet ainsi modifiée.
TIER APPLICATIF : SERVLETS Caractéristiques d’une servlet : Juste après l’instanciation d’une servlet, le serveur appelle la méthode init( ) de la servlet, méthode appelée qu’une seule fois durant le cycle de vie de la servlet. Pour chaque requête client, le serveur instancie un objet Request et un objet Response puis appelle la méthode service( ) de GenericServlet. Cette méthode qui reçoit en paramètre un objet Request (qui contient des informations concernant la requête), traite la requête, puis utilise l'objet Response pour renvoyer la réponse au client. Note : la méthode service( ) peut faire appel à d'autres méthodes pour traiter la requête, comme par exemple les méthodes doGet( ) ou doPost( ).
TIER APPLICATIF : SERVLETS Cycle de vie d’une servlet :
TIER APPLICATIF : SERVLETS Méthode Get ou méthode Post ?
TIER APPLICATIF : SERVLETS Exemple d’utilisation de la méthode Get :
TIER APPLICATIF : SERVLETS Récupération des paramètres d’une requête :
TIER APPLICATIF : SERVLETS Redirection de requête : L’extrait de code ci-dessous montre comment rediriger une requête vers des pages JSP ou vers une autre servlet en fonction d’un paramètre : Classe : Servlet Méthode getServletConfig ( ) : Renvoie un objet de type ServletConfig Classe : ServletConfig Méthode getServletContext ( ) : Renvoie un objet de type ServletContext.
TIER APPLICATIF : SERVLETS Autres possibilités offertes par les servlets : Récupérer des informations concernant la servlet (classe Servlet). Récupérer des informations concernant la requête HTTP telle que la longueur du message, l’adresse IP du client … (classes ServletRequest) Gérer la persistance des données côté serveur via des sessions (classe HttpSession) Gérer la persistance des données côté client via des cookies (classe Cookie) Classe HttpServletRequest Méthode getSession (boolean) : méthode renvoie sous la forme d’un objet de type HttpSession, la session courante associée à une requête. Si le paramètre est positionné à true et que la session n’existe pas encore, celle-ci est créée. Si le paramètre est positionné à false et que la session n’existe pas encore, celle-ci ne sera pas créée.