Latest web development tutorials

Hit Counter Servlet

page hit counter

Molte volte, si potrebbe essere interessati a sapere la quantità totale di clic su una particolare pagina del tuo sito. uso Servlet per calcolare questi clic sono molto semplici, perché il ciclo di vita di un servlet container per il suo controllo è in esecuzione.

Quanto segue si basa sulla realizzazione di una semplice procedura contatore di cicli page hit vita Servlet da prendere:

  • Inizializzare una variabile globale nel metodo init ().
  • Ogni metodo doGet call () o doPost (), abbiamo aumentato le variabili globali.
  • () Se lo si desidera, è possibile utilizzare una tabella di database per memorizzare il valore della variabile globale distruggere. Al successivo di inizializzazione servlet, questo valore può essere letto nel metodo init (). Questo passaggio è facoltativo.
  • Se si desidera una sessione una volta che le visite alla pagina di conteggio della sessione, utilizzare il metodo isNew () per verificare se la conversazione sessione è stata cliccato sulla stessa pagina. Questo passaggio è facoltativo.
  • È possibile visualizzare il valore globale del contatore, per mostrare le pagine totali di traffico del tuo sito. Questo passaggio è facoltativo.

Qui, si assume che il contenitore Web non può essere riavviato. Se si riavvia o Servlet viene distrutto, il contatore viene resettato.

Esempi

Questo esempio dimostra come implementare una semplice pagina web 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 的值写入到数据库
	} 

}

Ora cerchiamo di compilare il Servlet sopra, e creare la seguente voce nel file 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>

Ora visitando http: per chiamare il Servlet 8080 / TomcatTest / PageHitCounter: // localhost. Ciò aggiornare la pagina ogni volta, per aumentare il valore del contatore 1, il risultato è il seguente:

Numero totale di visite

6


Sito web Contatore visite

Molte volte, si potrebbe essere interessati a conoscere il traffico totale di tutto il sito. In Servlet, questo è molto semplice, siamo in grado di utilizzare il filtro per fare questo.

Quanto segue è quello di implementare un semplice sito web del ciclo di vita del filtro a base di colpire l'adozione di misure contro:

  • () Per inizializzare un init globale del filtro variabile.
  • Ogni metodi chiamata doFilter, sono aumentate le variabili globali.
  • Se lo si desidera, è possibile utilizzare una tabella di database () nel filtro distruggere variabile globale per memorizzare il valore. Successivo inizializzazione del filtro, il valore può essere letto nel metodo init (), questo passaggio è facoltativo.

Qui, si assume che il contenitore Web non può essere riavviato. Se si riavvia o Servlet viene distrutto, il contatore visite verrà azzerato.

Esempi

Questo esempio dimostra come implementare un semplice contatore sito hit:

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

Ora cerchiamo di compilare il Servlet sopra, e creare la seguente voce nel file 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>

....

Ora accedere a qualsiasi pagina del tuo sito, ad esempio http: // localhost: 8080 /. Questa volontà in qualsiasi pagina, ogni volta che si fa clic, l'aumento del valore del contatore 1, verrà visualizzato il seguente messaggio nel registro:

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