Blue Flower

Chercher

Servlets

1. Introduction

Une servlet est une application java qui s’exécute côté serveur en tant qu'extension du serveur; elle transmet des informations au serveur ou répond à des requêtes clientes. Toute application client/serveur peut mettre en œuvre une servlet en s'appuyant, soit sur le protocole http, soit sur d'autres protocoles comme ftp, smtp, etc. Dans les anciens serveurs Web,  on a besoin d'un mécanisme particulier pour prendre en charge les Servlets; ce mécanisme s'appelle conteneurs ou moteur de servlets; le plus célèbre d'entre eux  est Tomcat le moteur de Servlets développé par Apache Foundation.

Une Servlet peut être invoquée plusieurs fois par plusieurs requêtes simultanées. Écrite en java, une Servlet en retire toutes les avantages notamment, la portabilité, l'accès à toutes les API de Java comme JDBC (API qui permet l'accès aux bases de données).

2. L'interface javax.servlet.Servlet

L'API Servlet est rajoutée à JAVA à partir de J2EE 1.4; elle est repartie dans deux packages, le package "java.servlet" et  le package "javax.servlet.http". L’appellation javax au lieu de java au sein du nom du package indique que l'API Servlet fait partie de java J2EE. L'interface de base de cet API est javax.servlet.Servlet.

2.1 Le package javax.servlet 

Ce package contient des classes génériques, des interfaces qui ne dépendent pas d'un protocole particulier (protocol-independent)

2.2 Le package javax.servlet.http

Ce package contient des classes et des interfaces spécifiques pour des fonctionnalités relatives au protocole HTTP. 
L'interface javax.servlet.Servlet définit toutes les méthodes gérant le cycle de vie de toute Servlet. Comme cette interface est l'interface de base de toute  Servlet, chaque Servlet doit implémenter toutes ses  méthodes à savoir:

  1. public abstract void init(ServletConfig) throws ServletException : C'est la méthode déterminant le cycle de vie pour une Servlet;  elle est invoquée une seule fois lorsque le cycle de vie d'une Servlet particulière est traitée. cette méthode est utilisée pour initialiser une  Servlet.
  2. public abstract void service(ServletRequest , ServletResponse ) throws ServletException, IOException : C'est la méthode principale responsable de la logique métier d'une Servlet; si une nouvelle requête arrive au niveau de la Servlet, le conteneur web génère une nouvelle Thread; cette Thread exécute la méthode service() et traite la logique métier ou la tâche particulière attendue par la requête.
  3. public abstract void destroy(): La méthode destroy() est appelée uniquement à le fin du cycle de vie d'une Servlet;  cela permet à la Servlet de fermer  toutes les opérations restées en suspens comme, l'accès à des bases de données ou la fermeture de tous les fichiers ouverts.
  4. public abstract ServletConfig getServletConfig(): Cette méthode retourne l'objet Configuration de la Servlet; cet Objet  Configuration contient tous les paramètres de configuration et d’initialisation de la Servlet.
  5. public abstract String getServletInfo(): Cette méthode retourne une chaîne caractères qui contient des informations relatives à la Servlet; par exemple, on peut l'utiliser pour avoir  le nom de l'auteur de la Servlet.

3. L'interface Javax.servlet.ServletConfig

Au sein d'une Servlet on se sert de cette interface pour récupérer les paramètres d'initialisation et de configuration qui sont définis dans le fichier de configuration "web.xml". Chaque Servlet a ses propres paramètres et pour y avoir accès, on fait appel à la méthode "getServletConfig()" qui retourne  un objet ServletConfig. Les méthodes les plus importantes de l'interface ServeltConfig sont:

  1. public abstract ServletContext getServletContext():
    Cette méthode retourne un objet "ServletContext" au sein de la Servlet.
  2. public abstract Enumeration getInitParameterNames():
    Cette méthode retourne une  Enumeration des noms des paramètres de "init" définis pour la Servlet.
  3. public abstract String getInitParameter(String ):
    Cette méthode retourne la valeur d'un paramètre d'initialisation dont le nom est donné comme paramètre d'appel; si ce nom ne référence pas un paramètre présent dans "web.xml", elle  retourne "null".

4. La classe abstraite Javax.servlet.GenericServlet

 Cette classe abstraite implémente  les deux interfaces  "javax.servlet.Servlet" et  "javax.servlet.ServletConfig". Comme son nom l'indique, cette classe  est générique, donc elle ne nécessite pas de protocole particulier. Dans les classes qui dérivent de cette classe, on a part défaut l'implémentation de toutes les méthodes disponibles dans les interfaces  javax.servlet.Servlet et javax.servlet.ServletConfig.  Nous pouvons  donc simplement étendre cette classe pour avoir toutes les fonctionnalités disponibles par défaut et les utiliser. Comme la méthode service() est une méthode abstraite, si on utilise la classe GenericServlet on doit implémenter soit même la méthode service().

5. La classe abstraite javax.servlet.http.HttpServlet

La classe  abstraite "javax.servlet.http.HttpServlet" dispose  de beaucoup de méthodes entre autre les méthodes :

  • doGet(), pour les requêtes HTTP GET
  • doPost(), pour les requêtes HTTP POST
  • doPut(), pour les requêtes HTTP PUT
  • doDelete() pour les requêtes HTTP DELETE

Ces méthodes facilitent le travail avec le protocole HTTP en permettant aux clients du serveur web de dialoguer avec les Servlets HTTP présentes  au sein du serveur web. La classe javax.servlet.http.HttpServlet implément l'interface javax.servlet.Servlet définie ci-dessus; donc elle définit les 5 méthodes  init(), service(), destroy(), getServletConfig() et getServletInfo() qui assurent le cycle de vie d'une quelconque Servlet HTTP  en étant respectivement appelée lors de la création d'une Servlet, lors de l'appel d'une Servlet  pour le traitement d'une requête et lors de la destruction d'une instance de la Servlet.
La méthode public abstract void init(ServletConfig) throws ServletException: Elle est appelée par le serveur juste après l'instanciation de la Servlet. Lors de l'instanciation, le conteneur de Servlets passe en argument à la méthode init() un objet ServletConfig permettant de charger des paramètres de configuration propres à la Servlet. En cas d'anomalie lors de l'appel de la méthode init(), celle-ci renvoie une exception de type ServletException et la Servlet n'est pas initialisée.
La méthode public abstract void service(ServletRequest , ServletResponse ) throws ServletException, IOException: Elle ne peut pas être invoquée tant que la méthode init() n'est pas terminée; elle reçoit et répond aux requêtes des clients
La méthode public abstractvoid destroy(): Elle est appelée juste avant que le serveur ne détruise la Servlet: cela permet de libérer des ressources allouées dans la méthode init() tel qu'un fichier ou une connexion à une base de données.
public abstract ServletConfig getServletConfig(): Cette méthode retourne un objet qui représente la configuration de la Servlet; cet objet contient chaque paramètre d'initialisation et de démarrage de la Servlet.
public abstract String getServletInfo(): Cette méthode retourne une chaîne de caractères contenant  des informations relatives à la Servlet.

(à suivre).. 

précédent