English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Servlet 클릭 카운터

웹 페이지 클릭 카운터

종종, 특정 웹 페이지의 총 클릭 횟수를 알고 싶을 수 있습니다. 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
..................