在没有用之前我没看到效果!用了之后居然发现不是很好~!实际上是一个骗的把戏!
就是用cooike记录页面打开的次数!刷新一次就记录一次!这只是在客户端显示!并不记录到数据库中!
大家都知道当IE关闭之后cooike就自动销毁!当你再次打开的时候!产生一个新的cooike来重新记数!
所以总的来讲不是一个好的方法!只是把戏而已!
我系刚学jsp的,我写了小段代码,有什么改进之处请指出,
页面的基本功能是如果是同一台机器上五分钟内是不可以使访问人数增加的,就是不能只刷新页面就可以增加人数.
使用application储存人数
在tomcat + Ecplise测试通过~
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="javax.servlet.http.*" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'visit.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<%
Cookie cookie=new Cookie("visitor"+request.getLocalAddr(),"google.com.cn");
cookie.setMaxAge(60*5); //cookie的时间要在五分钟后
Cookie cookieArray[]=request.getCookies();
int i=0;
boolean isVisit=false;
while(i<request.getCookies().length) //列出所有的cookie这样就可以知道在五分钟内有没有重复提交了
{
String name=cookieArray[i].getName();
String myname=cookie.getName();
if(name.equals(myname))
{
isVisit=true;
break;
}
i++;
}
if(!isVisit)
{
response.addCookie(cookie);
if(null==(Integer)application.getAttribute("visitNum"))
{
application.setAttribute("visitNum",new Integer(0));
}
int num=(Integer)application.getAttribute("visitNum");
//out.print(num);
application.setAttribute("visitNum",++num);
}
%>
现在一共有<%= (Integer)application.getAttribute("visitNum") %>访问此页面
</body>
</html>
或者封装成一个javabean的话会更好一些
[此贴子已经被作者于2007-7-25 10:00:17编辑过]