如何限制JSP命中计数器?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何限制JSP命中计数器?相关的知识,希望对你有一定的参考价值。

我正在JSP中编写一个计数器,用于我的课程。我已经编写了代码,并没有错误及其工作,但问题是:如果用户打开网站并尝试使用不同的页面,每当用户返回主页时,计数器仍在添加一个数字,我该如何限制这部分?会议限制吗?这是我的代码:

<jsp:useBean id="counter" scope="application" class="counter.CounterBean" />
The current count for the counter bean is:
<jsp:setProperty name="counter" property="coun" value="1"></jsp:setProperty>
<%
counter.saveCount();
int _numberofvisitors=counter.getVisitorsNumber();
out.println(_numberofvisitors);
%>

豆:

package counter;

import java.sql.*;
import java.sql.SQLException;

public class CounterBean implements java.io.Serializable 

    int coun = 0;

    public CounterBean() 
        database.DatabaseManager.getInstance().getDatabaseConnection();
    

    public int getCoun() 
        return this.coun;
    

    public void setCoun(int coun) 
        this.coun += coun;
    

    public boolean saveCount() 
        boolean _save = false;
        database.SQLUpdateStatement sqlupdate = new database.SQLUpdateStatement("counter", "hitcounter");
        sqlupdate.addColumn("hitcounter", getCoun());
        if (sqlupdate.Execute()) 
            _save = true;
        
        return _save;
    

    public int getVisitorsNumber() throws SQLException 
        int numberOfVisitors = 0;
        if (database.DatabaseManager.getInstance().connectionOK()) 
            database.SQLSelectStatement sqlselect = new database.SQLSelectStatement("counter", "hitcounter", "0");
            ResultSet _userExist = sqlselect.executeWithNoCondition();
            if (_userExist.next()) 
                numberOfVisitors = _userExist.getInt("hitcounter");                
            
        
        return numberOfVisitors;
    
 
答案

更改此部分代码:

<%
counter.saveCount();
int _numberofvisitors=counter.getVisitorsNumber();
out.println(_numberofvisitors);
%>

<%
if (session.isNew()) 
    counter.saveCount();
 else 
    counter.setCoun(-1);

int _numberofvisitors=counter.getVisitorsNumber();
out.println(_numberofvisitors);
%>

希望这可以帮助。

更新:顺便说一句,最好为Counter类的方法选择更好的名称。首先,将setCoun改为setCount。此外,setter方法通常只将传递给它的值赋给其相关字段。如果要增加coun的值,请将方法名称更改为addCount。然后增加count值,如:

<jsp:setProperty name="counter" property="coun" value="$1 + counter.coun"></jsp:setProperty>
另一答案
 <%@page import="java.io.*,java.util.*" %>

 <html>
 <head>
 <title>Applcation object in JSP</title>
 </head>
 <body>
 <%


Integer hitsCount=(Integer)application.getAttribute("hitcount");
int m;
       if(hitsCount==null)
   

            m=1;

      hitsCount =Integer.valueOf(m);
                   application.setAttribute("hitcount", hitsCount);
 
 else
     

      hitsCount=(Integer)application.getAttribute("hitcount");
       m=hitsCount.intValue()+1;
      hitsCount=   Integer.valueOf(m);
        application.setAttribute("hitcount", hitsCount);

     



%>


<center>
<p>Total number of visits:<%=hitsCount.intValue()%> </p>
</center>
</body>
</html>

以上是关于如何限制JSP命中计数器?的主要内容,如果未能解决你的问题,请参考以下文章

在 Joomla 中添加命中计数器

Django中的垃圾邮件证明命中计数器

shared_ptrs 是不是由于引用计数器原子递增/递减而遇到缓存未命中?

Actionscript:如何创建一个计数器来注册一个 hitTestObject 并在主舞台上显示分数?

如何使用 Visual 2013 分析缓存未命中

我不了解 cachegrind 与 perf 工具之间的缓存未命中计数