1

コースワークのために、JSPでヒットカウンターを作成しています。私はコードを書きましたが、エラーとその動作はありませんが、問題は次のとおりです。ユーザーがWebサイトを開いて別のページを使用しようとすると、ユーザーがホームページに戻るたびに、カウンターが追加されます。数、どうすればこの部分を制限できますか?セッションで制限しますか?これは私のコードです:

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

2 に答える 2

2

コードのこの部分を変更します。

<%
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クラスのメソッドにはより適切な名前を選択することをお勧めします。まず、に変更setCounsetCountます。さらに、setterメソッドは通常、渡された値を関連するフィールドに割り当てるだけです。の値をインクリメントする場合はcoun、メソッド名を。に変更しaddCountます。count次に、次のように値をインクリメントします。

<jsp:setProperty name="counter" property="coun" value="${1 + counter.coun}"></jsp:setProperty>
于 2010-04-18T14:59:51.200 に答える
1
 <%@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>
于 2012-12-27T11:19:14.457 に答える