2012-04-08 7 views
0

Я пытаюсь подсчитать, сколько раз каждый пользователь вводит веб-сайт, но моя проблема в том, что, даже если я изменяю имя пользователя, число попаданий не перезапускается. Кроме того, после перезагрузки веб-страницы имя пользователя становится «нулевым».JSP User Hit Counter

<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

Существует некоторая путаница, что вы хотите сделать? Вы хотите, чтобы количество попаданий для каждого пользователя? –

+0

да, я хочу количество попаданий для каждого пользователя – toky

ответ

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