java怎么统计网站访问量

Python010

java怎么统计网站访问量,第1张

<DIV class="h">

<%-- 记录网站访问次数 --%>

<%

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() %>

1,Session

在JavaWeb中使用HttpSession(以下简称session)对象来表示一个会话。

正在装载数据……Session的创建(代表会话周期的开始):第一次调用request.getSession()方法时,会创建一个session对象。

Session的销毁(代表会话周期的结束):在某个请求周期内调用了Session.invalidate()方法,此请求周期结束后,session被销毁;或者是session超时后自动销毁。

对于JSP,如果指定了<%@ page session="false"%>,则在JSP中无法直接访问内置的session变量,同时也不会主动创建session,因为此时JSP未自动执行request.getSession()操作获取session。

在session对象刚创建的第一个请求周期内,调用session.isNew()方法将得到true。

可以在web.xml文件中配置session默认的超时时间(分钟):

<session-config>

<session-timeout>10session-timeout>

session-config>

也可以调用session. setMaxInactiveInterval()方法设置session超时时间(分钟)

2,SessionListener

通过SessionListenr可以监听session的创建和销毁,步骤:

1.写一个类MySessionListener,实现javax.servlet.http.HttpSessionListener接口及其sessionCreated()、sessionDestroyed()方法

2.在web.xml中配置SessionListener:

<listener>

<listener-class>MySessionListener类全名listener-class>

listener>

当 session被创建和销毁时,容器会分别调用SessionListener的sessionCreated()方法和 sessionDestroyed()方法,这两个方法中传入了一个参数对象HttpSessionEvent,可以通过此对象的 getSession()方法获取session对象