使用Cookie与Session实现访问控制和在线人数统计

需积分: 0 1 下载量 29 浏览量 更新于2024-08-18 收藏 3.97MB PPT 举报
"实现访问人数统计--jsp/servlet" 在Web开发中,有时我们需要记录访问网站的用户数量,这可以通过JSP和Servlet技术来实现。本文档主要关注如何使用Servlet和JSP的内置对象session和application来统计在线访问人数。 首先,让我们分析提供的代码片段。在登录处理页面中,当用户成功验证(例如,通过数据库查询确认用户名和密码匹配),会创建一个新的`User`对象并将其存储在session中。`session.setAttribute("LOGINED_USER", logineduser)`这一步确保了用户在会话期间保持登录状态。然后,代码创建了一个`ArrayList`类型的`loginedUsers`,用于存储所有登录的用户。如果`application.getAttribute("LOGINED_USER")`不为空,说明之前已经有登录的用户,那么就将这个列表从application域中取出并赋值给`loginedUsers`。接着,将新登录的用户添加到列表中,并将更新后的列表放回application域,以便全局统计在线用户。最后,通过`response.sendRedirect("index.jsp")`将用户重定向到主页面。 在状态管理方面,JSP提供了三种内置对象来处理客户端状态:request、session和application。request对象用于处理一次HTTP请求,session对象用于跟踪单个用户的会话,而application对象则在整个Web应用程序的生命周期内共享数据,适用于统计全局变量,如在线人数。 - **转发与重定向的区别**: - 转发发生在服务器端,浏览器的URL不会改变,请求只有一个生命周期。 - 重定向是客户端的行为,浏览器收到服务器的响应后会发起新的HTTP请求,URL会显示新的地址。 - **JSP实现数据库访问**: 通常使用JDBC(Java Database Connectivity)API,通过连接池获取数据库连接,执行SQL语句,处理结果集,最后关闭资源。 - **其他内置对象**: 包括out(输出流),pageContext(页面上下文),exception(异常对象),config(配置对象),page(当前页面对象)以及request和response。 - **Cookie的作用**: 主要用于在客户端存储小量信息,比如用户首选项、会话ID等,实现用户状态的持久化。 - **访问控制**: 可以通过session对象来实现,比如在用户登录后将用户标识存储在session中,后续访问时检查session中的用户标识以验证权限。 - **session与application对象的区别**: session是针对单个用户的,生命周期较短,一般随着用户会话结束而销毁;而application是全局的,覆盖整个应用程序,直到服务器关闭才会消失。 - **使用Cookie保存已访问信息**: 在用户访问页面后,创建一个Cookie存储相关信息,下次访问时读取Cookie来识别已访问状态。 - **使用session实现页面访问控制**: 登录成功后,将用户信息存入session,后续访问时检查session中的用户信息,未登录或session失效则重定向到登录页面。 - **使用application实现在线人数统计**: 将在线用户列表存储在application域,每次有新用户登录时更新该列表,可以实时反映出当前在线的用户数量。 本章的学习目标是掌握Cookie、session和application的原理及应用。理解这些概念对于构建功能丰富的Web应用程序至关重要,特别是涉及到用户状态管理和数据持久化的场景。同时,要注意安全问题,如Cookie可能带来的信息泄露风险,以及合理设置session和Cookie的有效期以平衡用户体验和安全性。