网站计数器是针对所有用户的,因此可以考虑如下方法:
1、将用户访问次数,存放到数据库中的一个统计表中,每有一个用户访问,数据库中就加1。
优点:容易理解,方便实现。
缺点:对数据库访问太频繁,服务器压力大(如果访问用户太多)。
2、设置一个静态变量,但服务器启动时,可以通过配置文件或表初始化该变量,当服务器关闭时,再将变量的值写入到文件或者数据库中。
优点:效率高,不会频繁的访问文件或者数据库。
缺点:实现复杂,要求对文件操作。
3、使用ServletContext,实现和第二种方法类似。
一次有效的点击:用户登录到注销。
servlet的生命周期:
Servlet生命周期分为三个阶段:
1,初始化阶段 调用init()方法 // 该方法只会被调用一次(当用户第一次访问servlet时)
2,响应客户请求阶段 调用service()方法
3,终止阶段 调用destroy()方法 //销毁servlet实例(释放内存)在三种情况下会被调用1、reload 该servlet(webApps)2.关闭tomcat 3.关机
ServletContext操作方法:
设置Context属性:
ServletContext sc=this.getServletContext();
//sc.setAttribute(String attributeName,object value);
sc.setAttribute("person1","Jim"));
sc.setAttribute("person2","Green");
获取Context属性:
ServletContext sc=this.getServletContext();
//sc.getAttribute(String name);
sc.getAttribute("person1");
实现思路:在服务器中存放一个文件用来存放访问计数,当servlet初始化时从文件中读取该数,然后进行累加(只在用户登录成功后才进行累加)并显示,当调用destroy()方法时将当前的数存到文件中(因为destroy后该servletcontext就被销毁,所以将数据存到文件中)。这样对文件只进行一次读和写操作。
图示: