利用Servlet怎么实现一个点击计数器功能

  介绍

这期内容当中小编将会给大家带来有关利用Servlet怎么实现一个点击计数器功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

以下是基于Servlet生命周期实现一个简单的页面点击计数器需要的步骤:

    <李>在init()方法中初始化一个全局变量。 <李>每次调用doGet()或doPost()方法时,增加全局变量。 <李>如果需要,可以使用一个数据库表来存储摧毁()方法中的全局变量。在下次初始化Servlet时,这个值可以在init()方法内被读取。这一步是可选的。 <李>如果想计算一个会话内一个页面的点量击,那么可以使用isNew()方法来查看该会话内是否已点击过相同的页面。这一步是可选的。 <李>可以显示全局计数器的值来显示网站中的总点击量。这一步是可选的。

在这里我假设网络容器不会被重新启动。如果网络容器被重新启动或Servlet被销毁,计数器将被重置。

实例:

这个例子演示了如何实现一个简单的页面点击计数器:

进口. io . *;
  进口java.sql.Date;
  进口java.util。*;
  进口javax.servlet。*;
  进口javax.servlet.http。*;
  公开课PageHitCounter扩展HttpServlet {
  私人int hitCount;
  公共空间init ()
  {//重置计数器。
  hitCount=0;
  }
  公共空间doGet (HttpServletRequest请求,HttpServletResponse响应)抛出ServletException, IOException
  {//设置响应内容类型
  response.setContentType (“text/html");//这个方法执行每当servlet//增加hitCount
  hitCount + +;
  PrintWriter=response.getWriter ();
  字符串title=癏its"总数;
  字符串docType=? lt; !doctype html公共\“-//w3c//dtd html 4.0“+
  “过渡//en \“祝辞\ n";
  出去了。println (docType +
  “& lt; html> \ n"+
  “& lt; head> & lt; title>“+名称+“& lt;/title> & lt;/head> \ n"+
  “& lt;身体背景=\“# f0f0f0 \“祝辞\ n"+
  “& lt; h2对齐=\“中心\“比;“+名称+“& lt;/h2> \ n"+
  “& lt; h3对齐=\“中心\“比;“+ hitCount +“& lt;/h3> \ n"+
  “& lt;/body> & lt;/html>“);
  }
  公共空间摧毁()
  {//这一步是可选的,但是如果你喜欢你//可以写hitCount值在数据库中。
  }
  }
  
  

现在编译上述Servlet并在网络。xml文件中创建以下条目:

....   & lt; servlet>   & lt; servlet-name> PageHitCounter   & lt; servlet-class> PageHitCounter   & lt;/servlet>   & lt; servlet-mapping>   & lt; servlet-name> PageHitCounter   & lt; url-pattern>/PageHitCounter   & lt;/servlet-mapping>   ....

现在使用URL http://localhost: 8080/PageHitCounter来调用这个Servlet。每次页面刷新时,计数器的值都会加1,这将产生如下所示的结果:

利用Servlet怎么实现一个点击计数器功能

很多时候,可能有兴趣知道整个网站的总点击量。在Servlet中,这也是非常简单的,可以使用过滤器实现这一点。

以下是实现一个基于过滤器生命周期的简单的网站点击计数器需要的步骤:

    <李>在过滤器的init()方法中初始化一个全局变量。 <李>每次调doFilter方用法时,增加全局变量。 <李>如果需要,可以使用一个数据库表来存储过滤器的破坏()方法中的全局变量的值。在下次初始化过滤器时,该值可以在init()方法内被读取。这一步是可选的。

在这里我假设网络容器不会被重新启动。如果网络容器被重新启动或Servlet被销毁,点击计数器将被重置。

实例:

这个例子演示了如何实现一个简单的网站点击计数器:

//进口所需的java库
  进口. io . *;
  进口javax.servlet。*;
  进口javax.servlet.http。*;
  进口java.util。*;
  公共类SiteHitCounter实现滤波器{
  私人int hitCount;
  FilterConfig公共空init(配置)抛出ServletException {//重置计数器。
  hitCount=0;
  }
  公共空间的doFilter (ServletRequest请求,ServletResponse响应FilterChain链)抛出io。IOException ServletException {//计数器增加> ....
  & lt; filter>
  & lt; filter-name> SiteHitCounter
  & lt; filter-class> SiteHitCounter
  & lt;/filter>
  & lt; filter-mapping>
  & lt; filter-name> SiteHitCounter
  & lt; url-pattern>/* & lt;/url-pattern>
  & lt;/filter-mapping>
  ....

利用Servlet怎么实现一个点击计数器功能