English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
종종, 특정 웹 페이지의 총 클릭 횟수를 알고 싶을 수 있습니다. Servlet을 사용하여 이러한 클릭 횟수를 계산하는 것은 매우 간단합니다. 왜냐하면 Servlet의 생명주기는 실행하는 컨테이너에 의해 제어된다는 것입니다.
Servlet 생명주기 기반의 간단한 웹 페이지 클릭 카운터를 구현하기 위해 필요한 단계는 다음과 같습니다:
init() 메서드에서 전체 변수를 초기화합니다.
doGet() 또는 doPost() 메서드를 호출할 때마다 전체 변수를 증가시킵니다.
destroy()에서 전체 변수 값을 저장하기 위해 데이터베이스 테이블을 사용할 수 있습니다. 다음 Servlet 초기화를 할 때, 이 값은 init() 메서드 내에서 읽을 수 있습니다. 이 단계는 선택 사항입니다.
하나의 세션 세션에 대해 페이지 클릭을 한 번만 카운트하고 싶다면, 해당 세션 세션이 이미 같은 페이지를 클릭했는지 확인하는 isNew() 메서드를 사용하십시오. 이 단계는 선택 사항입니다.
웹사이트에서 페이지의 총 클릭 횟수를 표시하려면 전체 카운터 값을 표시할 수 있습니다. 이 단계는 선택 사항입니다.
여기서는 웹 컨테이너가 재시작되지 않을 것이라고 가정합니다. 재시작이나 Servlet이 파괴되면 카운터가 재설정됩니다。
이 예제는 간단한 웹 페이지 클릭 카운터를 구현하는 방법을 보여줍니다:
package com.w3codebox.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의 값을 데이터베이스에 기록할 수 있습니다 } }
지금은 위의 Servlet을 컴파일하고 web.xml 파일에 다음 항목을 생성하겠습니다:
<?xml version="1.0" encoding="UTF-8"?> <web-app> </servlet> <servlet-name>PageHitCounter</servlet-name> <servlet-class>com.w3codebox.test.PageHitCounter</servlet-class> </</servlet> <servlet-mapping> <servlet-name>PageHitCounter</servlet-name> <url-pattern>/TomcatTest/PageHitCounter</url-pattern> </servlet-mapping> </web-app>
이제 http:을 통해 접근합니다://localhost:8080/TomcatTest/PageHitCounter를 통해 이 Servlet을 호출합니다. 이는 페이지가 새로고침될 때마다 카운터의 값을 증가시킵니다 1결과는 다음과 같습니다:
총 클릭 횟수6 |
많은 경우, 전체 웹 사이트의 총 클릭 횟수를 알고 싶을 수 있습니다. Servlet에서 이는 매우 간단합니다. 이를 위해 필터를 사용할 수 있습니다.
간단한 기반 필터 라이프 사이클 웹 사이트 클릭 카운터를 구현하기 위해 필요한 단계는 다음과 같습니다:
필터의 init() 메서드에서 전역 변수를 초기화합니다.
doFilter 메서드를 호출할 때마다 전역 변수를 증가시킵니다.
필요하다면, destroy() 메서드에서 데이터베이스 테이블을 사용하여 전역 변수의 값을 저장할 수 있습니다. 다음으로 필터를 초기화할 때, 이 값은 init() 메서드 내에서 읽을 수 있습니다. 이 단계는 선택사항입니다.
여기서, 웹 컨테이너가 재시작될 수 없다고 가정합니다. 재시작이나 Servlet가 파괴되면 클릭 카운터가 재설정됩니다.
이 예제는 간단한 웹 사이트 클릭 카운터를 구현하는 방법을 보여줍니다:
// 필수 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의 값을 데이터베이스에 기록할 수 있습니다 } }
지금은 위의 Servlet을 컴파일하고 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> ....
지금 사이트의 어떤 페이지에도 접근하세요. 예를 들어 http://localhost:8080/。이는 매번 어떤 페이지가 클릭될 때마다 카운터의 값을 증가시킵니다 1,그리고 로그에 다음 메시지가 표시됩니다:
사이트 방문 통계: 1 사이트 방문 통계: 2 사이트 방문 통계: 3 사이트 방문 통계: 4 사이트 방문 통계: 5 ..................