Latest web development tutorials

عداد بريمج

الصفحة عداد

وفي كثير من الأحيان، قد تكون مهتمة لمعرفة المبلغ الإجمالي من النقرات على صفحة معينة من موقع الويب الخاص بك. استخدام بريمج لحساب هذه النقرات هي بسيطة جدا، لأن دورة الحياة من حاوية بريمج بواسطة سيطرتها قيد التشغيل.

ويستند التالية على إعمال بسيطة الحياة بريمج خطوات دورة الصفحة عداد الواجب اتخاذها:

  • تهيئة متغير عمومي في طريقة الحرف الأول ().
  • كل 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: لاستدعاء بريمج 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: // المضيف المحلي: 8080 /. هذه الإرادة في أي صفحة في كل مرة يتم النقر عليه، والزيادة في قيمة العداد 1، فإنه سيتم عرض الرسالة التالية في السجل:

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