Latest web development tutorials

카운터 서블릿 히트

페이지 방문 횟수 카운터

많은 경우에, 당신은 당신의 사이트의 특정 페이지에서 클릭의 총량을 알고 관심이있을 수 있습니다. 그 제어에 의해 서블릿 컨테이너의 라이프 사이클이 실행되고 있기 때문에 무효 클릭을 계산 서블릿 사용은 매우 간단하다.

다음은 촬영하는 간단한 서블릿 라이프 사이클 페이지 방문 횟수 카운터 단계의 실현을 기반으로합니다 :

  • 은 init () 메소드에서 전역 변수를 초기화합니다.
  • 각 통화의 doGet () 또는의 doPost () 메소드는, 우리는 글로벌 변수를 증가하고있다.
  • 원하는 경우 (), 전역 변수를 파괴의 값을 저장하는 데이터베이스 테이블을 사용할 수있다. 다음 초기화 서블릿에서,이 값은 초기화 () 메소드를 판독 할 수있다. 이 단계는 선택 사항입니다.
  • 당신이 세션 수를 페이지 조회수 번 세션을 원하는 경우, 세션 대화가 같은 페이지를 클릭했는지 여부를 확인하기 위해 isNew () 메서드를 사용합니다. 이 단계는 선택 사항입니다.
  • 당신은 당신의 사이트의 전체 트래픽 페이지를 표시, 카운터의 전역 값을 표시 할 수 있습니다. 이 단계는 선택 사항입니다.

여기, 우리는 웹 컨테이너를 다시 시작해야 할 수 있다고 가정합니다. 당신이 다시 시작하거나 서블릿이 파괴되는 경우, 카운터가 재설정됩니다.

이 예제는 간단한 웹 페이지 방문 횟수 카운터를 구현하는 방법을 보여줍니다 :

package com.w3big.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 的值写入到数据库
	} 

}

이제 위의 서블릿을 컴파일하고 web.xml 파일에 다음 항목을 만들 수 있습니다 :

<?xml version="1.0" encoding="UTF-8"?>
<web-app>
  <servlet>
    <servlet-name>PageHitCounter</servlet-name>
    <servlet-class>com.w3big.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를 호출합니다. 다음과 같이 카운터 (1)의 값을 증가시키기 위해, 페이지마다 새로 고침 할 결과이다 :

히트의 총 수

6


웹 사이트의 방문 횟수 카운터

여러 번, 당신은 전체 사이트의 전체 트래픽을 알고 관심이있을 수 있습니다. 서블릿, 이것은 매우 간단합니다, 우리는이 작업을 수행하는 필터를 사용할 수 있습니다.

다음은 간단한 필터 기반의 라이프 사이클 웹 사이트 카운터 단계를 수행 할 명중 구현하는 것입니다 :

  • () 메서드는 전역 변수 필터 초기화를 초기화합니다.
  • 각 통화 doFilter 방법은, 글로벌 변수를 증가하고있다.
  • 원하는 경우, 그 값을 저장하는 전역 변수를 파괴 필터에 데이터베이스 테이블 ()을 사용할 수있다. 필터의 다음 초기화 값이 초기화 () 메소드에서 판독 할 수 있고,이 단계는 선택적이다.

여기, 우리는 웹 컨테이너를 다시 시작해야 할 수 있다고 가정합니다. 당신이 다시 시작하거나 서블릿이 파괴되는 경우, 횟수 카운터가 재설정됩니다.

이 예는 간단한 사이트 방문 횟수 카운터를 구현하는 방법을 보여줍니다 :

// 导入必需的 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 的值写入到数据库
  } 
} 

이제 위의 서블릿을 컴파일하고 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
..................