Servlets - Hit Counter

Hit Counter untuk Halaman Web

Sering kali Anda tertarik untuk mengetahui jumlah total klik pada halaman tertentu di situs Anda. Sangat mudah untuk menghitung hit ini menggunakan servlet karena siklus hidup servlet dikendalikan oleh wadah tempat ia berjalan.

Berikut adalah langkah-langkah yang harus diambil untuk mengimplementasikan penghitung halaman hit sederhana yang didasarkan pada Siklus Hidup Servlet -

  • Inisialisasi variabel global dalam metode init ().

  • Tingkatkan variabel global setiap kali metode doGet () atau doPost () dipanggil.

  • Jika diperlukan, Anda bisa menggunakan tabel database untuk menyimpan nilai variabel global dalam metode destroy (). Nilai ini bisa dibaca di dalam metode init () ketika servlet akan diinisialisasi lain kali. Langkah ini opsional.

  • Jika Anda hanya ingin menghitung klik halaman unik dengan-dalam sebuah sesi, Anda dapat menggunakan metode isNew () untuk memeriksa apakah halaman yang sama telah dipukul dengan-dalam sesi itu. Langkah ini opsional.

  • Anda dapat menampilkan nilai penghitung global untuk menunjukkan jumlah total klik di situs web Anda. Langkah ini juga opsional.

Di sini saya berasumsi bahwa penampung web tidak akan dimulai ulang. Jika di-restart atau servlet dihancurkan, penghitung hit akan direset.

Contoh

Contoh ini menunjukkan bagaimana menerapkan penghitung hit halaman sederhana -

import java.io.*;
import java.sql.Date;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class PageHitCounter extends HttpServlet {

   private int hitCount; 

   public void init() { 
      // Reset hit counter.
      hitCount = 0;
   } 

   public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

      // Set response content type
      response.setContentType("text/html");

      // This method executes whenever the servlet is hit 
      // increment hitCount 
      hitCount++; 
      PrintWriter out = response.getWriter();
      String title = "Total Number of Hits";
      String docType = "<!doctype html public \"-//w3c//dtd html 4.0 " + "transitional//en\">\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() { 
      // This is optional step but if you like you
      // can write hitCount value in your database.
   } 
}

Sekarang mari kita kompilasi servlet di atas dan buat entri berikut di web.xml

<servlet>
   <servlet-name>PageHitCounter</servlet-name>
   <servlet-class>PageHitCounter</servlet-class>
</servlet>

<servlet-mapping>
   <servlet-name>PageHitCounter</servlet-name>
   <url-pattern>/PageHitCounter</url-pattern>
</servlet-mapping>
....

Sekarang panggil servlet ini menggunakan URL http: // localhost: 8080 / PageHitCounter. Ini akan meningkatkan penghitung satu per satu setiap kali halaman ini disegarkan dan akan menampilkan hasil sebagai berikut -

Total Number of Hits

6

Hit Counter for a Website:

Sering kali Anda tertarik untuk mengetahui jumlah total klik di seluruh situs web Anda. Ini juga sangat sederhana di Servlet dan kita dapat melakukannya dengan menggunakan filter.

Berikut adalah langkah-langkah yang harus diambil untuk mengimplementasikan hit counter situs web sederhana yang didasarkan pada Filter Life Cycle -

  • Inisialisasi variabel global dalam metode init () dari sebuah filter.

  • Tingkatkan variabel global setiap kali metode doFilter dipanggil.

  • Jika diperlukan, Anda bisa menggunakan tabel database untuk menyimpan nilai variabel global dalam metode destroy () filter. Nilai ini bisa dibaca di dalam metode init () ketika filter akan diinisialisasi di lain waktu. Langkah ini opsional.

Di sini saya berasumsi bahwa penampung web tidak akan dimulai ulang. Jika di-restart atau servlet dihancurkan, penghitung hit akan direset.

Contoh

Contoh ini menunjukkan cara menerapkan penghitung hit situs web sederhana -

// Import required java libraries
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 {
      // Reset hit counter.
      hitCount = 0;
   }

   public void  doFilter(ServletRequest request, ServletResponse response, FilterChain chain) 
      throws java.io.IOException, ServletException {

      // increase counter by one
      hitCount++;

      // Print the counter.
      System.out.println("Site visits count :"+ hitCount );

      // Pass request back down the filter chain
      chain.doFilter(request,response);
   }
   
   public void destroy() { 
      // This is optional step but if you like you
      // can write hitCount value in your database.
   } 
}

Sekarang mari kita kompilasi servlet di atas dan buat entri berikut di 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 panggil URL apa saja seperti URL http: // localhost: 8080 /. Ini akan meningkatkan penghitung satu kali setiap kali halaman mana pun mendapat hit dan itu akan menampilkan pesan berikut di log -

Site visits count : 1
Site visits count : 2
Site visits count : 3
Site visits count : 4
Site visits count : 5
..................