JSP用户命中计数器

时间:2012-04-08 21:43:42

标签: java html 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>

2 个答案:

答案 0 :(得分: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);
    }
%>

答案 1 :(得分:0)

您是存储每位用户的点击次数还是仅存储点击次数?

在前一种情况下,您可以使用一个地图来检查地图中是否有特定用户的条目。如果找到条目,则将计数器增加1,如果未找到条目,则创建一个新条目并将相应的计数器设置为1.

在后一种情况下,您需要做的就是每次网站被点击时都会增加计数器。