Latest web development tutorials

Hit Counter Servlet

Page hit counter

Muchas veces, es posible que le interese saber la cantidad total de clics en una página de su sitio. el uso de servlets para calcular estos clics es muy sencilla, ya que el ciclo de vida de un contenedor de servlets por su control está funcionando.

Lo siguiente se basa en la realización de unos simples pasos página de contador de ciclo de vida del servlet que se deben tomar:

  • Inicializar una variable global en el método init ().
  • Cada llamada método doGet () o doPost (), que se han incrementado las variables globales.
  • () Si se desea, se puede utilizar una tabla de base de datos para almacenar el valor de la variable global destruirá. En la siguiente Servlet inicialización, este valor se puede leer en el método init (). Este paso es opcional.
  • Si desea una sesión una vez que las visitas a la página de recuento de sesión, utilice el método isNew () para comprobar si la conversación sesión se ha hecho clic en la misma página. Este paso es opcional.
  • Se puede visualizar el valor global del mostrador, para mostrar el total de páginas de tráfico en su sitio. Este paso es opcional.

Aquí, se supone que el contenedor Web no se puede reiniciar. Si reinicia o servlet está siendo destruido, el contador se pondrá a cero.

Ejemplos

Este ejemplo muestra cómo implementar un simple web page hit counter:

package com.w3big.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() 
	{ 
		// 重置点击计数器
		hitCount = 0;
	} 
    
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		response.setContentType("text/html;charset=UTF-8");
		// 增加 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() 
	{ 
		// 这一步是可选的,但是如果需要,您可以把 hitCount 的值写入到数据库
	} 

}

Ahora vamos a compilar el servlet anteriormente, y cree la siguiente entrada en el archivo web.xml:

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

Ahora visitando http: llamar al servlet 8080 / TomcatTest / PageHitCounter: // localhost. Esto actualizar la página cada vez, para aumentar el valor del contador 1, el resultado es el siguiente:

Número total de accesos

6


Sitio web contador de visitas

Muchas veces, es posible que le interese saber que el tráfico total de todo el sitio. En servlet, esto es muy simple, podemos usar el filtro para hacer esto.

El siguiente es poner en práctica un simple sitio web Ciclo de vida basado en filtros golpeado saltos antagonistas a tomar:

  • () Método para inicializar un init mundial de filtro variable.
  • Cada llamada doFilter métodos, se han incrementado las variables globales.
  • Si se desea, se puede utilizar una tabla de base de datos () en el filtro de destruir variable global para almacenar el valor. Siguiente inicialización del filtro, el valor se puede leer en el método init (), este paso es opcional.

Aquí, se supone que el contenedor Web no se puede reiniciar. Si reinicia o servlet está siendo destruido, el contador de visitas se restablecerá.

Ejemplos

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

// 导入必需的 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 的值写入到数据库
  } 
} 

Ahora vamos a compilar el servlet anteriormente, y cree la siguiente entrada en el archivo 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>

....

Ahora acceder a cualquier página de su sitio, como http: // localhost: 8080 /. Esto a su página, se hace clic en cada ocasión, el aumento del valor del contador 1, se mostrará el mensaje siguiente en el registro:

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