在制作站点计数器时,如果频繁的访问数数库(比如象哪种每增加一人,便写入数据库或文件的作法),当你的站点有很大的访问量时,必然会影响性能。通常的做法有两种,一是启动一个线程定时写入访问量,二是先在内存中保存访问量,只有当访问量达到一定的数量(比如10人)时才写一次数据库。下面例子用会话session作为计数。
package com.count; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.sql.*; public class SessionCounter implements HttpSessionListener { static int totalSessionCount = 0; static int currentSessionCount = 0; static int tempCount=0; private static final int MAX = 10; private ServletContext context = null; static { //服务器启动时先访问一次数据库,获取网站以前的访问量 try{ Connection conn; Statement stmt; ResultSet rs=null; String driver="com.mysql.jdbc.Driver"; String url="jdbc:mysql://127.0.0.1:3306/jinxiang?user=root&password=123456&characterEncoding=GBK"; Class.forName(driver);