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

需积分: 0 1 下载量 105 浏览量 更新于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的有效期以平衡用户体验和安全性。

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://JAVA.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name>springMVC</display-name> <welcome-file-list> <welcome-file>/WEB-INF/jsp/login.jsp</welcome-file> </welcome-file-list> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext-mybatis.xml</param-value> </context-param> <filter> <filter-name>encodingFilter</filter-name> <filter-class> org.springframework.web.filter.CharacterEncodingFilter </filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>classpath:log4j.properties</param-value> </context-param> <context-param> <param-name>webAppRootKey</param-name> <param-value>keshe_C12_09.root</param-value> </context-param> <listener> <listener-class> org.springframework.web.util.Log4jConfigListener </listener-class> </listener> </web-app>

2023-07-16 上传

1+x中级项目05 现有一个用户信息管理网站,项目名称xmvc05。 项目结构如下内容 类 描述 完成 com.neu.pojo.User 对应数据表user的javaBean 是 com.neu.util.IDUtil 工具类:用于表的主键生成 是 com.neu.controller.LoginController 用于用户登录功能 是 com.neu.controller.UserController 用于用户列表显示,访问路径(/users) 否 com.neu.dao.UserMapper 用户持久层接口, 否 /main/resources/mappers/UserMapper.xml mybatis配置文件 否 com.neu.dao.UserService 用户逻辑层接口 否 com.neu.dao.UserServiceImpl 用户逻辑层实现 否 src/main/resources 项目的配置文件路径 是 /webapp/WEB-INF/jsp/login.jsp 网站登录页面 是 /webapp/WEB-INF/jsp/users.jsp 用户列表显示页面 是 /webapp/WEB-INF/jsp/adduser.jsp 用户添加页面 是 /webapp/WEB-INF/jsp/updateuser.jsp 用户更新页面 是 src/main/webapp/resources 网站静态文件存放目录 是 其中在数据库xwebdb中有user表,访问该数据库的用户名/密码是xwebdb/xwebdb,user表结构如下: 字段名称 字段描述 字段类型 备注 id 用户编号 varcher(32) 主键 userName 用户名 varchar(100) 唯一约束 password 密码 varchar(100) 一、完成Json数据接口 在com.neu.controller.UserControllerl中编写一个方法,根据客户端传来的userName参数,调用UserService中的接口方法。获得数据库中一个用户的信息,并且将这个用户信息以Json的形式返回客户端。 1、访问此方法的客户端路径/users/json。 2.、返回json数据的格式: { "code": 200, "data": { "id": "1", "userName": "admin", "password": "123456" } } 3、效果见下图:

2023-07-17 上传