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

Contador de clics de Servlet

Contador de clics de página web

Muchas veces, puede que desee saber el número total de clics en una página específica del sitio web. Calcular estos clics utilizando Servlet es muy simple, ya que el ciclo de vida de un Servlet es controlado por el contenedor en el que se ejecuta.

Aquí están los pasos que se deben seguir para implementar un simple contador de clics de página basado en el ciclo de vida de Servlet:

  • Inicialice una variable global en el método init()

  • Aumenta la variable global cada vez que se llama a doGet() o doPost()

  • Si es necesario, puede usar una tabla de base de datos para almacenar el valor de la variable global en destroy(). Al inicializar el Servlet la próxima vez, este valor se puede leer en el método init(). Este paso es opcional.

  • Si solo desea contar una vez el clic de la página en una sesión, utilice el método isNew() para verificar si la sesión ya ha hecho clic en la misma página. Este paso es opcional.

  • Puede mostrar el valor del contador global en el sitio web para mostrar el número total de clics de la página. Este paso es opcional.

Supongamos que el contenedor web no se puede reiniciar. Si se reinicia o se destruye el Servlet, el contador se restablecerá.

Ejemplo en línea

Este ejemplo demuestra cómo implementar un simple contador de clics en una página web:

paquete 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;
/**
 * Implementación de Servlet class PageHitCounter
 */
@WebServlet("/PageHitCounter")
public class PageHitCounter extends HttpServlet {
    private static final long serialVersionUID = 1L;
    private int hitCount; 
    
    public void init() 
    { 
        // restablecer el contador de clics
        hitCount = 0;
    } 
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        // aumentar 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() 
    { 
        // Este paso es opcional, pero si es necesario, puede escribir el valor de hitCount en la base de datos
    } 
}

Ahora compilamos el Servlet anterior y creamos la siguiente entrada en el archivo web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app>
  </servlet>
    <servlet-name>PageHitCounter</servlet-nombre>
    <servlet-class>com.w3codebox.test.PageHitCounter</servlet-clase>
  </</servlet>
  <servlet-mapeo>
    <servlet-name>PageHitCounter</servlet-nombre>
    <url-patrón>/TomcatTest/PageHitCounter</url-patrón>
  </servlet-mapeo>
</web-app>

Ahora, accediendo a http://localhost:8080/TomcatTest/PageHitCounter para llamar a este Servlet. Esto aumentará el valor del contador cada vez que se actualice la página 1los resultados se muestran a continuación:

Total de clics

6

Contador de clics del sitio web

Muchas veces, puede que esté interesado en saber el total de clics del sitio web. En el Servlet, esto también es muy simple, podemos hacerlo con un filtro.

Aquí están los pasos a seguir para implementar un simple contador de clics de sitio web basado en el ciclo de vida del filtro:

  • Inicializar una variable global en el método init() del filtro.

  • Se aumenta la variable global cada vez que se llama al método doFilter.

  • Si es necesario, puede usar una tabla de base de datos en el método destroy() del filtro para almacenar el valor de la variable global. Este valor se puede leer en el método init() al inicializar el filtro nuevamente, este paso es opcional.

Aquí, suponemos que el contenedor web no se puede reiniciar. Si se reinicia o se destruye el Servlet, el contador de clics se restablecerá.

Ejemplo en línea

Este ejemplo muestra cómo implementar un simple contador de clics de sitio web:

// importar las bibliotecas java necesarias
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) 
                    lanza ServletException{
     // restablecer el contador de clics
     hitCount = 0;
  }
  public void doFilter(ServletRequest request, 
              ServletResponse response,
              FilterChain chain) 
              throws java.io.IOException, ServletException {
      // Aumentar el valor del contador 1
      hitCount++;
      // Salida del contador
      System.out.println("Estadísticas de visitas al sitio:")+ hitCount);
      // Devolver la solicitud a la cadena de filtros
      chain.doFilter(request,response);
  }
  public void destroy() 
  { 
      // Este paso es opcional, pero si es necesario, puede escribir el valor de hitCount en la base de datos
  } 
}

Ahora compilamos el Servlet anterior y creamos la siguiente entrada en el archivo web.xml:

....
<filtro
   <filtro-nombre>SiteHitCounter</filtro-nombre>
   <filtro-clase>SiteHitCounter</filtro-clase>
</filtro>
<filtro-mapeo>
   <filtro-nombre>SiteHitCounter</filtro-nombre>
   <url-patrón>/*</url-patrón>
</filtro-mapeo>
....

Ahora acceda a cualquier página del sitio web, por ejemplo http://localhost:8080/esto aumentará el valor del contador cada vez que se haga clic en cualquier página 1que se mostrará en el registro como el siguiente mensaje:

Estadísticas de visitas al sitio: 1
Estadísticas de visitas al sitio: 2
Estadísticas de visitas al sitio: 3
Estadísticas de visitas al sitio: 4
Estadísticas de visitas al sitio: 5
..................