Latest web development tutorials

Hit Counter Servlets

Seite hit counter

Viele Male, könnten Sie daran interessiert, den Gesamtbetrag der Klicks auf eine bestimmte Seite Ihrer Website kennen. Servlet Verwendung diese Klicks zu berechnen sind sehr einfach, da der Lebenszyklus eines Servlet-Container mit seinem Steuer läuft.

Im Folgenden wird auf der Grundlage der Realisierung eines einfachen Servlet-Lebenszyklus page hit counter Schritte unternommen werden:

  • Initialisieren Sie eine globale Variable in der init () -Methode.
  • Jeder Anruf doGet () oder doPost () Methode haben wir globale Variablen erhöht.
  • () Wenn gewünscht, können Sie eine Datenbanktabelle verwenden, um den Wert der globalen Variablen zu speichern, zu zerstören. Bei der nächsten Initialisierung Servlets, kann dieser Wert in der Methode init () gelesen werden. Dieser Schritt ist optional.
  • Wenn Sie eine Sitzung, sobald die Sitzungsanzahl Seitenaufrufe möchten, verwenden Sie isNew () Methode zu überprüfen, ob die Sitzung Gespräch auf der gleichen Seite angeklickt wurde. Dieser Schritt ist optional.
  • Sie können den globalen Wert des Zählers, zeigen die gesamten Verkehrs Seiten auf Ihrer Website zu zeigen. Dieser Schritt ist optional.

Hier gehen wir davon aus, dass der Web-Container nicht neu gestartet werden kann. Wenn Sie neu starten oder Servlets zerstört wird, wird der Zähler zurückgesetzt werden.

Beispiele

Dieses Beispiel zeigt, wie eine einfache web page hit counter zu implementieren:

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

}

Nun wollen wir die oben Servlet kompilieren, und erstellen Sie den folgenden Eintrag in der Datei 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>

Nun, indem Sie http: anrufen, um den Servlets 8080 / TomcatTest / PageHitCounter: // localhost. Dies wird die Seite jedes Mal zu aktualisieren, um den Wert des Zählers 1 zu erhöhen, ist das Ergebnis wie folgt:

Gesamtanzahl der Treffer

6


Website-Hit Counter

Viele Male, könnten Sie daran interessiert, den Gesamtverkehr des gesamten Geländes zu kennen. In Servlets, das sehr einfach ist, können wir den Filter, dies zu tun verwenden.

Im Folgenden ist eine einfache Filter-basierte Life Cycle website hit counter Schritte zur Umsetzung getroffen werden:

  • () Methode eine globale Variable Filter init zu initialisieren.
  • Jeder Aufruf doFilter Methoden haben sich die globalen Variablen erhöht.
  • Falls gewünscht, können Sie eine Datenbanktabelle () in den Filter zerstören globale Variable, um den Wert zu speichern. Nächsten Initialisierung des Filters kann der Wert in der init () Methode gelesen werden, ist dieser Schritt optional.

Hier gehen wir davon aus, dass der Web-Container nicht neu gestartet werden kann. Wenn Sie neu starten oder Servlets zerstört wird, wird der Trefferzähler zurückgesetzt werden.

Beispiele

Dieses Beispiel zeigt, wie eine einfache Website Trefferzähler zu implementieren:

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

Nun wollen wir die oben Servlet kompilieren, und erstellen Sie den folgenden Eintrag in der Datei 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>

....

Jetzt zugreifen jede Seite Ihrer Website, wie zum Beispiel http: // localhost: 8080 /. Dies wird in jeder Seite jedes Mal angeklickt wird, der Anstieg der Wert des Zählers 1, wird die folgende Meldung im Protokoll angezeigt werden:

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