Latest web development tutorials

Hit Counter Servlet

Page Hit Counter

Много раз, вы можете быть заинтересованы, чтобы узнать общее количество кликов на конкретной странице вашего сайта. Использование сервлетов для расчета этих кликов очень просты, так как жизненный цикл сервлета контейнера по его контролем работает.

Ниже на основе реализации простой сервлет жизненного цикла шагов страницы Hit Counter которые должны быть приняты:

  • Инициализировать глобальную переменную в методе инициализации ().
  • Метод Каждый вызов doGet () или doPost (), мы увеличили глобальные переменные.
  • () При желании, вы можете использовать таблицу базы данных для хранения значения глобальной переменной уничтожить. На следующей инициализации сервлета, это значение можно прочитать в методе инициализации (). Этот шаг является необязательным.
  • Если вы хотите сеанс один раз хитов число сеансов страниц, используйте метод isNew (), чтобы проверить, был ли сеанс разговора была нажата на той же странице. Этот шаг является необязательным.
  • Вы можете отобразить глобальное значение счетчика, чтобы показать общее количество страниц трафика на вашем сайте. Этот шаг является необязательным.

Здесь мы предполагаем, что веб-контейнер не может быть перезапущен. При повторном запуске или Servlet уничтожается, счетчик будет сброшен.

примеров

Этот пример демонстрирует, как реализовать простой веб-страницы счетчик посещений:

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

}

Теперь давайте компилировать выше Servlet, и создать следующую запись в файле 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: для вызова Servlet 8080 / TomcatTest / PageHitCounter: // Localhost. Это позволит обновить страницу каждый раз, чтобы увеличить значение счетчика 1, результат выглядит следующим образом:

Всего просмотров

6


Счетчики Hit

Много раз, вы, возможно, будет интересно узнать, общий трафик всего сайта. В Servlet, это очень просто, мы можем использовать фильтр, чтобы сделать это.

Ниже приводится реализовать простой фильтр на основе веб-сайта Жизненный цикл ударил встречные шаги, которые необходимо принять:

  • () Метод для инициализации глобальной переменной инициализации фильтра.
  • Каждый вызов метода doFilter, увеличили глобальные переменные.
  • При желании, вы можете использовать таблицы базы данных () в фильтре уничтожить глобальную переменную для хранения значения. Следующая инициализация фильтра, значение может быть прочитано в методе инициализации (), этот шаг не является обязательным.

Здесь мы предполагаем, что веб-контейнер не может быть перезапущен. При перезапуске или 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: // локальный: 8080 /. Это в любой страницы каждый раз, когда она нажата, увеличение значения счетчика 1, то появится следующее сообщение в журнале:

网站访问统计: 1
网站访问统计: 2
网站访问统计: 3
网站访问统计: 4
网站访问统计: 5
..................