实现网站访问人数统计功能的步骤:????????????????????????????????????????
- 创建静态登录页面,并指定表单提交由登录处理页面进行处理。
- 创建登录处理页面获得登录信息,查询数据库,判断该用户是否注册,如果该用户已注册,把已登录用户的信息保存在一个全局范围内。
- 在新闻发布系统左导航栏中加入超链接,用来导航到右侧的已访问人数统计页面。
- 创建已访问人数统计页面,从全局范围内取出访问者个数并显示。 ???????
?
需求:??????????????????????????????????????????????????????????????
??为**系统增加已访问人数统计功能。
关键代码:???????????????????????????????????????????????????????????
1、创建静态登录页面login2.html ???????
1 <form method="POST" name="form1" action="login2.jsp">
2、创建登录处理页面login2.jsp,把已登录用户的信息保存在一个全局范围内 ???????
if (rs.next()) { User logineduser = new User(name, pass); session.setAttribute("LOGINED_USER", logineduser); List loginedUsers = new ArrayList(); //访问者列表 if (application.getAttribute("LOGINED_USER") != null) { // 从全局范围内取出原有的访问者列表 loginedUsers = (List) application.getAttribute("LOGINED_USER"); } // 把新登录用户的信息存入访问者列表中 loginedUsers.add(logineduser); application.setAttribute("LOGINED_USER", loginedUsers); response.sendRedirect("index.jsp"); }
3、在新闻发布系统左导航left.jsp页面中加入超链接?????????
1 <a href="showAllLoginedUsers.jsp" target="mainFrame">已访问人数统计</a>
4、创建已访问人数统计页面showAllLoginedUsers.jsp????????
<html> <% // 访问者列表 List loginedUsers = new ArrayList(); // 从全局范围内取出访问者列表 if (application.getAttribute("LOGINED_USER") != null) { loginedUsers = (List) application.getAttribute("LOGINED_USER"); } %> <body> <p align="center"><br><br><br> 目前,有<%=loginedUsers.size()%>人已经访问过本网站!<br><br> 访问者的登录名称分别是:<br> <% for (int i = 0; i < loginedUsers.size(); i++) { User logineduser = (User) loginedUsers.get(i); out.print(logineduser.getName()); out.print("<br/>"); } %> </p> </body> </html>
?
实现网站访问人数统计功能的方法和技巧???????????????????????????????????
- application对象是全局对象,存放在服务器端,供访问该网站的所有用户共享,所以很耗服务器资源,一般在网站用户访问量较小的情况下使用application对象。
- 使用application全局变量来存储已访问用户的信息集合,在读取和更改集合时都要对application对象进行强制类型转换。
- 当重新开启一个浏览器窗口,已访问人数会增加,并在页面上显示出这个用户的信息。
- 网站一旦因意外重启,则application对象将被重置,计数从0开始,所以通常将统计已访问用户信息存放到数据库中。
?
不使用实现网站访问人数统计功能的方法和技巧的后果???????????????????????
- 如果用户访问人数过多,使用application对象来存储已访问用户信息,容易导致服务器负载过重而死机。
- 使用application对象不进行强制类型转换,会引发程序运行错误。
- 网站一旦因意外重启,application对象将被重置,计数从0开始,导致以往已访问网站用户的历史记录丢失。