0

我试图计算每个用户进入网站的次数,但我的问题是即使我更改了用户名,点击次数也不会重新开始。此外,一旦我重新加载网页,用户的名称就会变为“null”。

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

2 回答 2

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);
    }
%>
于 2012-04-11T04:47:00.307 回答
0

您是存储每个用户的命中数还是仅存储命中数?

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

在后一种情况下,您需要做的就是在每次访问网站时增加计数器。

于 2012-04-09T12:00:12.670 回答