Một Hit Counter nói cho bạn biết về lượng khách truy cập trên một trang cụ thể trong Website của bạn. Thường thì, bạn đính kèm một Hit Counter với index.jsp page khi giả sử khách truy cập đầu tiên thăm Homepage của bạn.
Để triển khai một Hit Counter, bạn có thể sử dụng một đối tượng ẩn application và được liên kết với phương thức getAttribute() và setAttribute().
Đối tượng này là một sự biểu diễn của một JSP page thông qua toàn bộ vòng đời của nó. Đối tượng application được tạo khi JSP page được khởi tạo và sẽ bị gỡ bỏ khi JSP page bị gỡ bỏ bởi phương thức jspDestroy().
Dưới đây là cú pháp để thiết lập một biến cho đối tượng application trong JSP:
application.setAttribute(String Key, Object Value);
Bạn có thể sử dụng phương thức trên để thiết lập một biến Hit Counter và để reset cùng một biến đó. Sau đây là phương thức để đọc biến mà được thiết lập bởi phương thức trước đó:
application.getAttribute(String Key);
Mỗi khi một người sử dụng truy cập trang của bạn, bạn có thể đọc giá trị hiện tại của Hit Counter và tăng giá trị đó thêm 1 và sau đó thiết lập nó để sử dụng lần sau.
Ví dụ
Đây là ví dụ minh họa cách bạn sử dụng JSP để điều khiển tổng lượt click trên một trang cụ thể. Nếu bạn muốn tính tổng lượt click trên Website, thì bạn sẽ phải bao code này trong tất cả JSP page.
<%@ page import="java.io.*,java.util.*" %> <html> <head> <title>Applcation object in JSP</title> </head> <body> <% Integer hitsCount = (Integer)application.getAttribute("hitCounter"); if( hitsCount ==null || hitsCount == 0 ){ /* First visit */ out.println("Welcome to my website!"); hitsCount = 1; }else{ /* return visit */ out.println("Welcome back to my website!"); hitsCount += 1; } application.setAttribute("hitCounter", hitsCount); %> <center> <p>Total number of visits: <%= hitsCount%></p> </center> </body> </html>
Bây giờ đặt code trên trong main.jsp và gọi JSP bởi sử dụng địa chỉ URL là http://localhost:8080/main.jsp. Điều này sẽ hiển thị giá trị Hit Counter mà sẽ tăng mỗi khi bạn refresh trang đó. Bạn có thể thử truy cập trang bởi sử dụng các trình duyệt khác và bạn sẽ thấy rằng: Hit Counter sẽ vẫn tăng với mỗi lượt click và sẽ hiển thị kết quả giống như sau:
Welcome back to my website!
Total number of visits: 12
Reset Hit Counter trong JSP
Điều gì xảy ra nếu bạn khởi động lại ứng dụng (ví dụ: Web server), điều này sẽ reset biến application và lượng đếm của bạn sẽ reset về 0. Để tránh điều này, bạn có thể triển khai counter theo cách chuyên nghiệp hơn, như sau:
- Định nghĩa một Database Table với một lượng đếm đơn, gọi là hitcount. Gán giá trị 0 cho nó.
- Với mỗi lượt click, đọc table để nhận giá trị hitcount.
- Tăng giá trị của hitcount thêm 1 và cập nhật table với giá trị mới.
- Hiển thị giá trị mới của hitcount như là tổng lượng click trên trang đó.
- Nếu bạn muốn tính lượng click cho toàn bộ trang, triển khai các bước trên cho toàn bộ trang trong Website.