网页计数器 javabean session application 多种方法实现

运用session,javabean,servlet实现网页计数器 

目录

一、运行结果

二、原理

1、session

2、Javabean

但是有个小问题

3、application

三、代码分享

count.jsp

Bean.java


一、运行结果

 

二、原理

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;
    }
}