在index.jsp页面中接收用户的sessionid,并对该id判断,纳入到哈希表中。如果表中没有该用户id,表示用户第一次进入页面,需要对访问量自增;如果表中已存在该用户id,表示用户不是第一次进入页面,访问量不变。
<%@page import="java.util.HashMap"%>
<%@page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>统计页面访问量</title>
</head>
<body>
<h4>统计页面访问量</h4>
当前用户session id=<%= session.getId() %><br>
<%
//收集用户访问次数count和seMap(次数,sessionID)
//seMap用来存放(次数,sessionID)键值对,count用来记录访问次数
HashMap seMap = (HashMap)application.getAttribute("hm");
Integer count = (Integer)application.getAttribute("couter");
if(count == null){
//如果服务器第一次被用户访问,需要更新count和seMap对象
count = 1;
out.print("访问量:1次");
application.setAttribute("couter", 1);
seMap = new HashMap();
seMap.put(1, session.getId());
application.setAttribute("hm", seMap);
}else{
//如果是第k次被用户访问
if(!seMap.containsValue(session.getId())){
//访问的用户是新的用户,它的sessionID还没有加入seMap
count ++;
application.setAttribute("couter", count);
seMap.put(count, session.getId());
application.setAttribute("hm", seMap);
}
out.print("访问量:" + count + "次");
}
//遍历seMap,显示历史访问次数
if(seMap != null){
for(int i = 0;i < seMap.size();i ++){
out.print("<br>第" + (i + 1) + "位访问用户的sessionID=" + seMap.get(i + 1));
}
}
%>
</body>
</html>
运行结果如下: