English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Compteur de clics Servlet

Compteur de clics de page web

Souvent, vous pourriez être intéressé de connaître le nombre total de clics sur une page spécifique du site Web. Utiliser un Servlet pour calculer ces clics est très simple, car le cycle de vie d'un Servlet est contrôlé par le conteneur dans lequel il s'exécute.

Voici les étapes à suivre pour implémenter un simple compteur de clics basé sur le cycle de vie du Servlet :

  • Initialisez une variable globale dans la méthode init().

  • Augmentez la variable globale à chaque appel de la méthode doGet() ou doPost().

  • Si nécessaire, vous pouvez utiliser une table de base de données pour stocker la valeur de la variable globale dans destroy(). Cette valeur peut être lue dans la méthode init() lors de la prochaine initialisation du Servlet. Cette étape est optionnelle.

  • Si vous ne souhaitez compter qu'une seule fois le clic sur la page pour une session, utilisez la méthode isNew() pour vérifier si la session a déjà cliqué sur la même page. Cette étape est optionnelle.

  • Vous pouvez afficher la valeur du compteur global pour afficher le nombre total de clics sur la page du site Web. Cette étape est optionnelle.

Nous supposons ici que le conteneur web ne pourra pas être redémarré. Si un redémarrage ou une destruction de Servlet intervient, le compteur sera réinitialisé.

Exemple en ligne

Ce présent exemple montre comment implémenter un simple compteur de clics sur une page web :

package com.w3codebox.test;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * Servlet implementation class PageHitCounter
 */
@WebServlet("/PageHitCounter")
public class PageHitCounter extends HttpServlet {
    private static final long serialVersionUID = 1L;
    private int hitCount; 
    
    public void init() 
    { 
        // réinitialiser le compteur de clics
        hitCount = 0;
    } 
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        // augmenter hitCount 
        hitCount++; 
        PrintWriter out = response.getWriter();
        String title = "总点击量";
        String docType = "<!DOCTYPE html> \n";
        out.println(docType +
            "<html>\n" +
            "<head><title>" + title + "</title></head>\n" +
            "<body bgcolor=\"#f0f0f0\">\n" +
            "<h1 align="center">" + title + "</h1>\n" +
            "<h2 align="center">" + hitCount + "</h2>\n" +
            "</body></html>
    }
    
    public void destroy() 
    { 
        // Cette étape est optionnelle, mais si nécessaire, vous pouvez écrire la valeur de hitCount dans la base de données
    } 
}

Maintenant, compilons le Servlet ci-dessus et créons l'entrée suivante dans le fichier web.xml :

<?xml version="1.0" encoding="UTF-8"?>
<web-app>
  </servlet>
    <servlet-name>PageHitCounter</servlet-name>
    <servlet-class>com.w3codebox.test.PageHitCounter</servlet-class>
  </</servlet>
  <servlet-mapping>
    <servlet-name>PageHitCounter</servlet-name>
    <url-pattern>/TomcatTest/PageHitCounter</url-pattern>
  </servlet-mapping>
</web-app>

Maintenant, accédez à http://localhost:8080/TomcatTest/PageHitCounter pour appeler ce Servlet. Cela ajoutera la valeur du compteur à chaque actualisation de la page 1les résultats sont affichés comme suit :

Nombre total de clics

6

Compteur de clics de site web

Souvent, vous pourriez être intéressé de savoir le nombre total de clics sur tout le site. Dans un Servlet, c'est aussi très simple, nous pouvons le faire avec un filtre.

Voici les étapes à suivre pour implémenter un simple compteur de clics de site web basé sur le cycle de vie du filtre :

  • Initialiser une variable globale dans la méthode init() du filtre.

  • Le compteur global est augmenté à chaque appel de la méthode doFilter.

  • Si nécessaire, vous pouvez utiliser une table de base de données dans la méthode destroy() du filtre pour stocker la valeur de la variable globale. Cette valeur peut être lue dans la méthode init() lors de la prochaine initialisation du filtre, cette étape est optionnelle.

Ici, nous supposons que le conteneur Web ne pourra pas être redémarré. Si le redémarrage ou la destruction du Servlet a lieu, le compteur de clics sera réinitialisé.

Exemple en ligne

Ce exemple démontre comment implémenter un simple compteur de clics de site web :

// importation des bibliothèques java nécessaires
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
public class SiteHitCounter implements Filter
    
  private int hitCount; 
               
  public void init(FilterConfig config) 
                    throws ServletException{
     // réinitialiser le compteur de clics
     hitCount = 0;
  }
  public void doFilter(ServletRequest request, 
              ServletResponse response,
              FilterChain chain) 
              throws java.io.IOException, ServletException {
      // Augmenter la valeur du compteur 1
      hitCount++;
      // Sortie du compteur
      System.out.println("Statistiques de visite du site :"+ hitCount);
      // Retournez la requête à la chaîne de filtre
      chain.doFilter(request,response);
  }
  public void destroy() 
  { 
      // Cette étape est optionnelle, mais si nécessaire, vous pouvez écrire la valeur de hitCount dans la base de données
  } 
}

Maintenant, compilons le Servlet ci-dessus et créons l'entrée suivante dans le fichier web.xml :

....
<filter>
   <filter-name>SiteHitCounter</filter-name>
   <filter-class>SiteHitCounter</filter-class>
</filter>
<filter-mapping>
   <filter-name>SiteHitCounter</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>
....

Visitez n'importe quelle page du site, par exemple http://localhost:8080/。Cela ajoutera la valeur du compteur à chaque clic sur une page quelconque 1,elle affichera le message suivant dans le journal :

Statistiques de visite du site : 1
Statistiques de visite du site : 2
Statistiques de visite du site : 3
Statistiques de visite du site : 4
Statistiques de visite du site : 5
..................