Latest web development tutorials

Hit Counter Servlet

Licznik Page hitem

Wiele razy, można się dowiedzieć, całkowitą ilość kliknięć na określonej stronie witryny. Zastosowanie aplet do obliczenia tych kliknięć są bardzo proste, ponieważ cykl życia kontenerze serwletów przez jego kontrolą pracuje.

Ten fragment bazuje na realizację prostych kroków zaradczych cyklu strona hitem życia serwletu, które należy podjąć:

  • Zainicjować zmienną globalną w metodzie init ().
  • Każda metoda doGet call () lub doPost (), mamy wzrost zmiennych globalnych.
  • () W razie potrzeby można skorzystać z tabeli bazy danych do przechowywania wartości zmiennej globalnej zniszczyć. Na następnym inicjalizacji serwletu, wartość ta może być odczytana w metodzie init (). Ten krok jest opcjonalny.
  • Jeśli chcesz sesję raz hrabiego sesji stronę trafienia, należy użyć metody isNew (), aby sprawdzić, czy rozmowa sesji został wciśnięty na tej samej stronie. Ten krok jest opcjonalny.
  • Można wyświetlić wartość globalnego licznika, aby pokazać całkowitą liczbę stron ruchu na swojej stronie. Ten krok jest opcjonalny.

Tutaj zakładamy, że zbiornik internetowa nie może zostać wznowiona. Po ponownym uruchomieniu lub serwletu jest zniszczona, licznik zostanie zresetowany.

Przykłady

Ten przykład pokazuje jak zaimplementować proste strony www 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 的值写入到数据库
	} 

}

Teraz skompilować powyższy Servlet i utworzyć następujący wpis w pliku 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>

Teraz odwiedzając http: zadzwonić aplet 8080 / TomcatTest / PageHitCounter: // localhost. To odświeżania strony za każdym razem w celu zwiększenia wartości tego licznika 1, wynik wygląda następująco:

Całkowita liczba wyświetleń

6


Licznik Hit WWW

Wiele razy, można się dowiedzieć, całkowity ruch całej witrynie. W Servlet, to jest bardzo proste, możemy użyć filtru, aby to zrobić.

Poniżej znajduje się zaimplementować prosty filtr oparte strona Life Cycle hit licznik kroków, które należy podjąć:

  • () Metoda zainicjować zmienną globalną filtra Init.
  • Każde wywołanie metody doFilter, wzrosły zmiennych globalnych.
  • W razie potrzeby można skorzystać z tabeli bazy danych () w filtrze niszczą zmienną globalną do przechowywania wartości. Następny inicjalizacji filtra, wartość można odczytać w metodzie init (), ten krok jest opcjonalny.

Tutaj zakładamy, że zbiornik internetowa nie może zostać wznowiona. Po ponownym uruchomieniu lub serwletu jest zniszczona, licznik trafień zostanie zresetowany.

Przykłady

Ten przykład pokazuje jak zaimplementować prosty licznik site 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 的值写入到数据库
  } 
} 

Teraz skompilować powyższy Servlet i utworzyć następujący wpis w pliku 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>

....

Teraz dostęp do dowolnej strony witryny, na przykład http: // localhost: 8080 /. To z każdej strony przy każdym kliknięciu, zwiększenie wartości licznika 1, wyświetli się następujący komunikat w dzienniku:

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