Nhiều khi bạn quan tâm đến tổng lượt click trên một trang cụ thể trong Website của bạn. Nó là đơn giản để tính toán những lượt click này bởi sử dụng một Servlet, bởi vì vòng đời của một Servlet được điều khiển bởi Container, mà nó chạy trong đó.
Sau đây là các bước để triển khai một Hit Counter đơn giản dựa trên vòng đời của Servlet:
Tại đây, tôi giả sử Web container sẽ không được restart. Nếu nó được restart hoặc Servlet bị hủy, thì hit counter sẽ được reset.
Ví dụ
Ví dụ sau minh họa cách triển khai một hit counter đơn giản:
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.
}
}
Biên dịch Servlet trên và tạo các entry sau trong 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>
....
Bây giờ, chúng ta gọi Servlet này bởi sử dụng http://localhost:8080/PageHitCounter. Nó sẽ tăng lượng đếm thêm 1 mỗi khi trang được refresh và nó sẽ cho kết quả:
Total Number of Hits
6
Nhiều khi bạn quan tâm đến tổng lượt click trên toàn bộ Website của bạn. Điều này cũng đơn giản trong Servlet và chúng ta có thể thực hiện nó bởi sử dụng các Filter:
Sau đây là các bước để triển khai một Hit Couter trên một Website dựa trên vòng đời của Filter:
Tại đây, tôi giả sử Web container sẽ không được restart. Nếu nó được restart hoặc Servlet bị hủy, thì hit counter sẽ được reset.
Ví dụ
Sau đây là ví dụ minh họa cách triển khai một Hit counter trên một Website trong Servlet:
// 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.
}
}
Biên dịch Servlet trên và tạo các entry sau trong 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>
....
Bây giờ gọi bất kỳ URL nào chẳng hạn như http://localhost:8080/. Nó sẽ tăng lượng đếm thêm 1 mỗi khi bất kỳ trang nào nhận một click và sẽ hiển thị thông báo sau:
Site visits count : 1
Site visits count : 2
Site visits count : 3
Site visits count : 4
Site visits count : 5
..................
Unpublished comment
Viết câu trả lời