我正在尝试计算每个用户进入网站的次数,但我的问题是即使我更改了用户名,也不会重启点击次数。此外,一旦我重新加载网页,用户的名称将变为“空”。
<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 :(得分: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> Welcome back to my website!");
hitsCount = userCountMap.get(key);
hitsCount+=1;
}else{
out.println("<h3>"+name+"</h3> Welcome to my website!");
hitsCount=1;
}
userCountMap.put(key, hitsCount);
}
%>
答案 1 :(得分:0)
您是存储每位用户的点击次数还是仅存储点击次数?
在前一种情况下,您可以使用一个地图来检查地图中是否有特定用户的条目。如果找到条目,则将计数器增加1,如果未找到条目,则创建一个新条目并将相应的计数器设置为1.
在后一种情况下,您需要做的就是每次网站被点击时都会增加计数器。