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