Latest web development tutorials

Hit Counter Servlet

Halaman hit counter

Banyak kali, Anda mungkin akan tertarik untuk mengetahui jumlah total klik pada halaman tertentu dari situs Anda. penggunaan Servlet untuk menghitung klik ini sangat sederhana, karena siklus hidup wadah Servlet oleh kontrol berjalan.

Berikut ini didasarkan pada realisasi kehidupan Servlet langkah halaman siklus hit counter sederhana yang akan diambil:

  • Menginisialisasi variabel global dalam metode init ().
  • Setiap doGet panggilan () atau doPost () metode, kami telah meningkatkan variabel global.
  • () Jika diinginkan, Anda dapat menggunakan tabel database untuk menyimpan nilai dari variabel global menghancurkan. Pada inisialisasi Servlet berikutnya, nilai ini dapat dibaca dalam metode init (). Langkah ini adalah opsional.
  • Jika Anda ingin sesi setelah klik halaman jumlah sesi, menggunakan metode isNew () untuk memeriksa apakah percakapan sesi telah diklik pada halaman yang sama. Langkah ini adalah opsional.
  • Anda dapat menampilkan nilai global counter, untuk menunjukkan halaman lalu lintas total pada situs Anda. Langkah ini adalah opsional.

Di sini, kita mengasumsikan bahwa kontainer Web tidak bisa direstart. Jika Anda me-restart atau Servlet sedang dihancurkan, counter akan reset.

contoh

Contoh ini menunjukkan bagaimana menerapkan hit counter halaman web sederhana:

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

}

Sekarang mari kita mengkompilasi Servlet atas, dan menciptakan entri berikut dalam 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>

Sekarang dengan mengunjungi http: untuk memanggil Servlet 8080 / TomcatTest / PageHitCounter: // localhost. Ini akan me-refresh halaman setiap kali, untuk meningkatkan nilai dari counter 1, hasilnya adalah sebagai berikut:

Total jumlah hits

6


Website Hit Kontra

Banyak kali, Anda mungkin akan tertarik untuk mengetahui total lalu lintas dari seluruh situs. Dalam Servlet, ini sangat sederhana, kita dapat menggunakan filter untuk melakukan hal ini.

Berikut ini adalah untuk mengimplementasikan sebuah website Life Cycle berdasarkan filter sederhana hit langkah kontra yang akan diambil:

  • () Metode untuk menginisialisasi global penyaring init variabel.
  • Setiap metode panggilan doFilter, telah meningkat variabel global.
  • Jika diinginkan, Anda dapat menggunakan tabel database () di filter menghancurkan variabel global untuk menyimpan nilai. inisialisasi berikutnya filter, nilai dapat dibaca dalam metode init (), langkah ini adalah opsional.

Di sini, kita mengasumsikan bahwa kontainer Web tidak bisa direstart. Jika Anda me-restart atau Servlet sedang dihancurkan, hit counter akan reset.

contoh

Contoh ini menunjukkan bagaimana menerapkan counter situs hit sederhana:

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

Sekarang mari kita mengkompilasi Servlet atas, dan menciptakan entri berikut dalam 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>

....

Sekarang mengakses halaman apapun dari situs Anda, seperti http: // localhost: 8080 /. Ini pada setiap halaman setiap kali diklik, peningkatan nilai counter 1, maka akan muncul pesan berikut di log:

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