2012-04-08 63 views
0

我想要統計每個用戶進入網站的次數,但我的問題是即使我更改了用戶名,命中次數也不會重新啓動。另外,一旦我重新加載網頁,用戶的名字就變成「null」。JSP用戶點擊計數器

<HTML> 
<BODY> 
<FORM METHOD=POST ACTION="SaveName.jsp"> 
Who are You ? <INPUT TYPE=TEXT NAME=username SIZE=20> 
<P><INPUT TYPE=SUBMIT> 
</FORM> 
</BODY> 
</HTML> 

<%@ page import="java.io.*,java.util.*" %> 
<html> 
<head> 
<title>Applcation object in JSP</title> 
</head> 
<body> 
<% 
    String name = request.getParameter("username"); 
    session.setAttribute("theName", name); 
    Integer hitsCount = 
    (Integer)application.getAttribute("hitCounter"); 
    if(hitsCount ==null || hitsCount == 0){ 
    /* First visit */ 
    out.println("Welcome to my website! "); 

    hitsCount = 1; 
}else{ 
    /* return visit */ 
    out.println("Welcome back to my website!"); 
    hitsCount += 1; 
} 
application.setAttribute("hitCounter", hitsCount); 
%> 
<%= session.getAttribute("theName") %> 
<br>Total number of visits: <%= hitsCount%></br> 
</body> 
</html> 
+0

有一些困​​惑,你想做什麼?你想爲每個用戶點擊數嗎? – 2012-04-09 04:39:47

+0

是的,我希望每個用戶的點擊數 – toky 2012-04-10 18:31:57

回答

0

您是否存儲每個用戶的命中次數,或者您只存儲命中次數?

在前一種情況下,您可以使用地圖來檢查地圖中是否存在特定用戶的條目。如果找到條目,則將計數器增加1,如果未找到條目,則創建一個新條目並將相應的計數器設置爲1.

在後面的情況下,您所需要做的就是每次增加計數器網站被擊中。

1

在JSP

<%! 
Map<String,Integer> userCountMap = new HashMap<String,Integer>(); 
Integer hitsCount=0; 
String key; 
%> 


<% 
    String name = request.getParameter("username"); 
    if(name!=null && !"".equals(name)){ 
     key=name.toLowerCase(); 
     if(userCountMap.get(key)!=null){ 
      /* return visit */ 
      out.println("<h3>"+name+"</h3>&nbsp;Welcome back to my website!"); 
      hitsCount = userCountMap.get(key); 
      hitsCount+=1; 

     }else{ 
      out.println("<h3>"+name+"</h3>&nbsp;Welcome to my website!"); 
      hitsCount=1; 
     } 
     userCountMap.put(key, hitsCount); 
    } 
%>