网页计数器 javabean session application 多种方法实现
运用session,javabean,servlet实现网页计数器
目录
一、运行结果
二、原理
1、session
运行网页,没有就创建一个session,有的话就访问一次就加一
但是session的作用域只是会话域,这个创建的对象对于参与与某客户端会话的所有组件有效(假如换一个浏览器,这个session不会参与另一个浏览器的计数)
2、Javabean
在jsp页面里
<jsp:useBean>创建Bean
<jsp:setProperty> 设置Bean属性
<jsp:getProperty>获取Bean属性
需要指定javaBean的生存范围,默认page。(生存范围有:page,request,session,application 依次作用域变大)
需要指定特定的类来进行逻辑运算,例如指定的Bean.java 类
还要注意的是如果有多个javabean,他们的命名不能一样
但是有个小问题
这块的application运行的结果是2,我在idea中调试时count的值是1,但是网页中显示出来的是2,希望知道原因的哥哥姐姐们能告诉我一下!还有就是下面用application实现的时候也是这个错误,我就把下面的else number=1 屏蔽掉了最后显示的是1,我也不知道对不对该不该屏蔽,希望有人可以告诉我为甚么???!
3、application
运行时判断有无application,没有就先创建一个
application的作用域咱对象在整个应用的生命周期里都有效(换个浏览器运行,这个里面的计数也会存在,会继续加一)
三、代码分享
count.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<br>
<head>
<title>Title</title>
</head>
<br>
<font color="red">1、利用session实现网页计数器</font>
<% int number1 = 0;
HttpSession session1 = request.getSession();
Object counter = session1.getAttribute("COUNTER");
if(counter ==null){
number1=1;
}else {
number1=((Integer)counter).intValue();
number1++;
}
session1.setAttribute("COUNTER",new Integer(number1));
out.println("当前网页访问次数:"+number1);
%>
</br>
</br>
<font color="red">2.1、利用JavaBean实现 范围是request的网页计数器</font>
<jsp:useBean id="mybean" scope="request" class="Bean.CountBean" />
当前网页访问次数:
<jsp:getProperty name="mybean" property="count"/></br>
<font color="red">2.2、利用JavaBean实现范围是session的网页计数器</font>
<jsp:useBean id="mybean1" scope="session" class="Bean.CountBean" />
当前网页访问次数:
<jsp:getProperty name="mybean1" property="count"/>
</br>
<font color="red">2.3、利用JavaBean实现范围是page的网页计数器</font>
<jsp:useBean id="mybean2" scope="page" class="Bean.CountBean" />
当前网页访问次数:
<jsp:getProperty name="mybean2" property="count"/>
</br>
<font color="red">2.4、利用JavaBean实现范围是application的网页计数器</font>
<jsp:useBean id="mybean3" scope="application" class="Bean.CountBean" />
当前网页访问次数:
<jsp:getProperty name="mybean3" property="count"/>
</br></br>
<font color="red">3、用application实现全局网页计数器</font>
<%
int number=0;
if(application.getAttribute("number")!=null){
number = (Integer) application.getAttribute("number");
number=number+1;
}
// else{
// number=1;
// }
out.println("当前网页访问次数:"+number);
application.setAttribute("number",number);
%>
</body>
</html>
Bean.java
public class CountBean {
private int count=0;
public int getCount(){
count++;
return count;
}
public void setCount(int count){
this.count = count;
}
}