Compteur de clics de servlet


Compteur de clics sur une page Web

Souvent, vous pourriez être intéressé de connaître le nombre total de clics sur une page particulière de votre site Web. Compter ces hits à l'aide de servlets 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 sur une page Web basé sur le cycle de vie du servlet :

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

  • Incrémente les variables globales à chaque fois que la méthode doGet() ou doPost() est appelée.

  • 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 facultative.

  • Si vous ne souhaitez compter qu'un seul clic sur une page par session, utilisez la méthode isNew() pour vérifier si la même page a été cliquée par cette session. Cette étape est facultative.

  • Vous pouvez afficher le nombre total de clics sur une page de votre site internet en affichant la valeur d'un compteur global. Cette étape est facultative.

Ici, nous supposons que le conteneur Web ne pourra pas redémarrer. S'il y a un redémarrage ou si le Servlet est détruit, le compteur sera réinitialisé.

Exemple

Cet exemple montre comment implémenter un simple compteur de clics sur une page Web :

import java.io.*;
import java.sql.Date;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class PageHitCounter extends HttpServlet{
    
  private int hitCount; 
               
  public void init() 
  { 
     // 重置点击计数器
     hitCount = 0;
  } 

  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
            throws ServletException, IOException
  {
      // 设置响应内容类型
      response.setContentType("text/html");
      // 该方法在 Servlet 被点击时执行 
      // 增加 hitCount 
      hitCount++; 
      PrintWriter out = response.getWriter();
      String title = "总点击量";
      String docType =
      "<!doctype html public \"-//w3c//dtd html 4.0 " +
      "transitional//en\">\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() 
  { 
      // 这一步是可选的,但是如果需要,您可以把 hitCount 的值写入到数据库
  } 
}

Compilons maintenant le servlet ci-dessus et créons-le dans le fichier web.xml suivant entrée :

....
 <servlet>
     <servlet-name>PageHitCounter</servlet-name>
     <servlet-class>PageHitCounter</servlet-class>
 </servlet>

 <servlet-mapping>
     <servlet-name>PageHitCounter</servlet-name>
     <url-pattern>/PageHitCounter</url-pattern>
 </servlet-mapping>
....

Appelez maintenant ce servlet en accédant à l'URL http://localhost:8080/PageHitCounter. Cela augmentera la valeur du compteur de 1 à chaque actualisation de la page, et le résultat sera le suivant :

Clics totaux

总点击量

6

6< 🎜>

Compteur de clics sur le site Web

Souvent, vous pourriez être intéressé de connaître le nombre total de visites pour l'ensemble de votre site Web. Dans les servlets, c'est également très simple, nous pouvons le faire en utilisant des filtres.

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

  • Initialisez un global dans la méthode init() du filtre variable.

  • Chaque fois que la méthode doFilter est appelée, la variable globale est augmentée.

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

Ici, nous supposons que le conteneur Web ne pourra pas redémarrer. En cas de redémarrage ou de destruction du Servlet, le compteur de clics sera réinitialisé.

Exemple

Cet exemple montre comment implémenter un simple compteur de clics sur un site Web :

// 导入必需的 java 库
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{
     // 重置点击计数器
     hitCount = 0;
  }

  public void  doFilter(ServletRequest request, 
              ServletResponse response,
              FilterChain chain) 
              throws java.io.IOException, ServletException {

      // 把计数器的值增加 1
      hitCount++;

      // 输出计数器
      System.out.println("网站访问统计:"+ hitCount );

      // 把请求传回到过滤器链
      chain.doFilter(request,response);
  }
  public void destroy() 
  { 
      // 这一步是可选的,但是如果需要,您可以把 hitCount 的值写入到数据库
  } 
}

Compilons maintenant le servlet ci-dessus et créons-le dans le fichier web.xml. Ce qui suit entrée :

....
<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 maintenant n'importe quelle page du site Web, telle que http://localhost:8080/. Cela incrémentera le compteur de 1 à chaque fois qu'une page est cliquée et affichera le message suivant dans le journal :

网站访问统计: 1
网站访问统计: 2
网站访问统计: 3
网站访问统计: 4
网站访问统计: 5
..................