Cycle de vie d'une Servlet

Le cycle de vie d'une servlet est géré par le conteneur de servlets. Le cycle de vie se résume en 5 étapes:
  1. Charger la classe Servlet
  2. Créer une instance de Servlet
  3. Appeler la méthode init()
  4. Appeler la méthode service()
  5. Appeler la méthode destroy()
Les étapes 1, 2 et 3 sont exécutées seulement une seule fois, lorsque la servlet est chargée. Par défaut, la servlet n'est pas chargée jusqu'à ce que la première requête soit reçue. Vous pouvez forcer le conteneur de servlets à charger la serlvet quand il est en cous exécution.
L'étape 4 est exécutée de multiple fois à chaque requête HTTP.
L'étape 5 est exécutée quand le conteneur de servlet détruit la servlet.

Ceci est un algorithme qui représente le cycle de vie d'une servlet:

servlet life cycle

Les étapes sont expliquées en détails ci-dessous:

Charger la classe Servlet

D'abord, pour que la servlet est appelée, le conteneur de servlets doit charger la classe Servlet. Cela est fait comme n'importe quelle classe.

Créer une instance de Servlet

Maintenant que la classe est chargée, la conteneur crée une instance de servlet. Généralement, une seule instance est créée et les requête en concurrence sont traitées dans la même instance de servlet. C'est au conteneur de servlets à décider mais, en général, il n'y a qu'une instance.

Appeler la méthode init()

La méthode init() est conçu pour qu'elle soit appelée qu'une seule fois. Lorsque l'instance est créée, la méthode init() est appelée. . Elle permet à la servlet de s'initialiser avant que la première requête soit traitée. Vous pouvez spécifier les paramètres d'initialisation de la servlet dans le fichier web.xml.

La méthode init() ressemble à ceci:

public void init() throws ServletException {
// Initialisation...
}

Appeler la méthode service()

Pour chaque requête reçue, la serveur crée un nouveau thread et exécute la méthode service(). La méthode service() vérifie le type de la requête HTTP (GET, POST, PUT, DELETE, etc.) et appelle les méthodes correspondants doGet, doPost, doPut, doDelete, etc. Tant que la servlet reste active, la méthode service() peut être invoquer de nouveau. Donc, cette étape peut être la plus longue étape dans le cycle de vie d'une servlet puisqu'elle s'exécute plusieurs fois.

Voici la déclaration de cette méthode:

public void service(ServletRequest request, 
ServletResponse response)
throws ServletException, IOException{
}
Les méthode doGet() et doPost() sont fréquemment utilisées à chaque arrivée de requête. Voici la déclaration des deux méthodes.

La méthode doGet()

La requête GET est créée dans un URL ou dans un formulaire HTML qui n'a aucun méthode définie et qui doit être traité par la méthode doGet().

public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
// code
}

La méthode doPost()

La requête POST est créée dans un formulaire HTML et doit être traité par la méthode doPost().

public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
// Servlet code
}

Appeler la méthode destroy()

La méthode destroy() est appelée seulement une fois à la fin de cycle de vie d'une servlet. Cette méthode permet de fermer la connexion, arreter les threads, sauvegarder les listes de cookie.
Après destory() est appelée, l'objet servlet est détruit. La méthode destory() ressemble à ceci:

public void destroy() {
// Finalization code...
}