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