分别设计⽹页访问计数器,会话计数器,访问⽹站计数器。
张继军董卫《java web 应⽤开发技术与实案列教程》课后习题之第三章第7题
题⽬内容:7.分别设计⽹页访问计数器,会话计数器,访问⽹站计数器。
分别设计为count1.jsp、count2.jsp、count3.jsp。
⽹页访问计数器count1.jsp
application对象:所有访问同⼀⽹站的⽤户,都有⼀个相同的application对象,除⾮关闭服务器,application对象中设置的属性才会被收回。也就是说刷新⼀次页⾯、关闭浏览器再打开、⽤其他浏览器打开application对象中设置的属性都会⼀直存在,可以⽤来计算当前页⾯访问的次数。
<%
Integer count =(Integer) Attribute("count");
if(count == null){
count =0;
}
application.setAttribute("count", count +1);
%>
欢迎!您是第<%=count%>个访问⽤户。
运⾏结果
分别⽤eclipse内置运⾏环境运⾏后(多次刷新后),再转⽤⾕歌开打(打开+刷新,次数均会+1)结果如下:
会话计数器count2.jsp
session对象:从进⼊⽹站到关闭所经过的过程才是⼀次会话,第⼀次进去是0,关闭之后才会进⾏+1操作,即在下⼀次打开⽹站时才会显⽰上⼀次增加次数,所以i=1开始计数 。这⾥运⽤w()判断是否是新的会话。那么在当前页⾯刷新就不会进⾏+1操作了。⽤其他浏览器打开才会进⾏+1操作,关闭浏览器再重新打开算⼀次新的会话。
<%!int i =1;%><!-- session对象打开到关闭才算⼀次会话,所以提前从i=1计数-->
<%
if(session.isNew()){//判断是否是⼀个新的会话
i++;
}
application.setAttribute("count", i);
Integer count =(Integer) Attribute("count");
%>
欢迎!您是第<%=i%>个访问⽤户
运⾏结果
eclipse运⾏结果如下:
转⽤⾕歌打开第⼀次,然后关闭再打开第⼆次,结果如下:
当然,好奇⼼也会驱使我回eclipse关掉再运⾏看看结果会怎么样,结果还是3。这样该是eclipse本⾝的原因。就是说即使你把eclipse的运⾏窗⼝关掉再打开,应该不算是把eclipse内置浏览器运⾏环境给关掉了。因为当你把⾕歌关闭再打开运⾏次数变成4的时候,回到eclipse 刷新下就会发现也变成了4。这应该是⾜以证明我刚刚的结论。学习,就是不断折腾的过程!嘿嘿。
访问⽹站访问计数器count3.jsp
访问⽹站计数器,唉?这不是跟上⼀个会话计数器原理差不多的嘛。都需要通过w()来控制的吧。仔细想想,这主要还得看怎么定义的,刷新页⾯、不同浏览器打开、同⼀⽤户同⼀主机MAC地址,或者在⼀时间段内多次打开等等都能作为是否增加次数的标准吧。照搬课本例题,话说功能是“统计⽹站访问⼈数及其当前在线⼈数”,但我似乎看不出来如何统计在线⼈数的…不过课本<title>标签内就是这么写的呀! /狗头保命
<%! Integer yourNumber=new Integer(0);%>
<%
if(session.isNew()){
Integer number=(Attribute("count");
if(number==null)//如果是第⼀个访问本站
{number=new Integer(1);}
else
{number=new Integer(number.intValue()+1);}90设计网
application.setAttribute("count", number);
yourNumber=(Attribute("count");
}
%>
欢迎访问本站,您是第<%=yourNumber %>个访问⽤户。
运⾏结果
emmm,其实跟上⼀个会话计数器效果差不多的。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。