<%-- 记录网站访问次数 --%>
<%
Integer counter = (Integer)application.getAttribute("counter") //先从application里面获取计数器的key的值
if(counter==null){
//如果该值为null,说明第一次访问
application.setAttribute("counter",1)
counter=(Integer)application.getAttribute("counter")
}else {
//如果该值不为空,取出来进行累加
int i = counter.intValue()
i++
application.setAttribute("counter",i)//累加后再放进去
}
%>
<% User user =(User)session.getAttribute("users")%>
<%="欢迎"+user.getName() %>|您是第<%=counter.intValue()%>位访客
</DIV>
步骤一、建一个表,表名任意,这里取名为:visitorcounter,表的结构如下所示:+-------+------------------+------+-----+------------+----------------+
| Field | Type | Null | Key | Default| Extra |
+-------+------------------+------+-----+------------+----------------+
| id| int(11) unsigned | NO | PRI | NULL | auto_increment |
| vdate | date | NO | | 2000-01-01 ||
| vnum | int(11) | NO | | 0 ||
+-------+------------------+------+-----+------------+----------------+
步骤二、建立一个java类,名字也为:visitorcounter,类的内容如下:
package com.hdzx.pub
import java.sql.ResultSet
import java.text.SimpleDateFormat
import java.util.Date
public class VisitorCounter {
private final static String TABLE_NAME = "visitorcounter"
private static String today = null
private static long today_num = 0
private static long total_num = 0
//加载访问量
public static void loadNum(){
if(total_num<1)
loadTotalNum()
if(today_num<1)
loadToadyNum()
}
//加载今日访问量
private static void loadToadyNum() {
// TODO Auto-generated method stub
DBConnect db = null
ResultSet rs = null
if(today==null)
today = getTodayDate()
String sql = "select vnum from "+TABLE_NAME+" where vdate='"+today+"'"
try {
db = new DBConnect()
rs = db.executeQuery(sql)
if(rs.next()){
today_num = rs.getLong("vnum")
}
else
{
sql = "insert into "+TABLE_NAME+"(vdate,vnum) values('"+today+"',0)"
db.executeUpdate(sql)
today_num = 0
}
} catch (Exception e) {
// TODO: handle exception
today_num = 0
System.out.println("com.hdzx.pub~VisitorCounter.incTotalCounter:获得访问人数")
}
}
//加载总访问量
private static void loadTotalNum() {
// TODO Auto-generated method stub
// TODO Auto-generated method stub
DBConnect db = null
ResultSet rs = null
if(today==null)
today = getTodayDate()
String sql = "select vnum from "+TABLE_NAME+" where id=1"
try {
db = new DBConnect()
rs = db.executeQuery(sql)
if(rs.next()){
total_num = rs.getLong("vnum")
}
else
{
total_num = 0
}
} catch (Exception e) {
// TODO: handle exception
total_num = 0
System.out.println("com.hdzx.pub~VisitorCounter.incTotalCounter:获得访问人数")
}
}
//增加总的访问量
private static int incTotalCounter(){
int k = 0
DBConnect db = null
loadNum()
total_num = total_num+1
String sql = "update "+TABLE_NAME+" set vnum="+total_num+" where id=1"
try {
db = new DBConnect()
k = db.executeUpdate(sql)
} catch (Exception e) {
// TODO: handle exception
System.out.println("com.hdzx.pub~VisitorCounter.incTotalCounter:增加访问人数")
}
return k
}
//增加今日的访问量
public static int incTodayCounter(){
int k = 0
DBConnect db = null
String sql = null
loadNum()
today_num += 1
sql = "update "+TABLE_NAME+" set vnum="+today_num+" where vdate='"+today+"'"
try {
db = new DBConnect()
k = db.executeUpdate(sql)
if(k >0)
incTotalCounter()
} catch (Exception e) {
// TODO: handle exception
System.out.println("com.hdzx.pub~VisitorCounter.incTotalCounter:增加访问人数")
}
return k
}
//获得今天的日期
private static String getTodayDate(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd")
return sdf.format(new Date())
}
///获得今日访问量
public static long getTodayNum(){
loadNum()
return today_num
}
//获得总的访问量
public static long getTotalNum(){
loadNum()
return total_num
}
}
步骤三、经过以上的步骤后,在页面中加入以下的代码,就可以实现网站访问量的统计工作:
if(session.isNew())
{
VisitorCounter.incTodayCounter()
}
%>
今日访问量:<%=VisitorCounter.getTodayNum() %><br/>
总的访问量: <%=VisitorCounter.getTotalNum() %>