-
HttpSession的创建和销毁 实现HttpSessionListener接口用于监听它的创建和销毁事件 一个HttpSession可以注册多个HttpSessionListener接口, 一个web应用中可以有多个HttpSession对象 有两个事件处理方法: sessionCreated方法: public void sessionCreated(HttpSessionEvent se) session创建时调用 sessionDestroyed方法: public void sessionDestroyed(HttpSessionEvent se) session销毁时调用 HttpSessionListener的主要用途: 统计在线人数 记录访问日志,记录访问时间、访问的ip /** * 销毁session * 1.关闭服务器 * 2.关闭浏览器 * 3.不关闭浏览器,session超时 */ 不关闭浏览器,session超时 可以在web.xml配置session超时的时间 <session-config> <session-timeout>0</session-timeout> </session-config> 0:session没有超时的限制 1:session超时1分钟后销毁,但是并不是准确的一分钟查看全部
-
监听器分类: 1.按监听器的对象划分: a 用户监听应用程序环境对象(ServletContext)的时间监听器 b 用于监听用户会话对象(HttpSession)的事件监听器 c 用于监听请求消息对象(ServletRequest)的事件监听器。 2.按事件划分 a 监听域对象自身的创建和销毁的事件监听器 b 监听域对象中的属性的增加和删除的事件监听器 c 监听绑定到HttpSession域中的某个对象的状态的事件监听器 ServletContext的创建和销毁 实现ServletContextListener接口用于监听它的创建和销毁事件 一个项目中可以有多个ServletContextListener,但是只有一个ServletContext对象 有两个事件处理方法: (1)contextInitialized方法: public void contextInitialized( ServletContextEvent sce ) ServletContext创建时调用 参数 ServletContextEvent 事件对象,可以获取ServletContext对象以及一些初始化参数 例如: 1.获取ServletContext对象: ServletContext sc = sce.getServletContext(); 获取初始化参数:sc.getInitParmeter("参数名称"); 初始化参数在web.xml中配置: <context-param> <param-name>initParam</param-name> <param-value>imooc</param-value> </context-param> 2.设置ServletContext属性:sc.setAttribute("name",obj); 然后在其它地方获取getAttribute("name") (2)contextDestroyed方法: public void contextDestroyed( ServletContextEvent sce ) ServletContext销毁时调用 主要用于数据库链接关闭时释放一些资源,以免过度的占用。查看全部
-
监听器的启动顺序查看全部
-
1:配置多个监听器的情况下,采用先到先得的算法,来执行监听器 2:监听器,过滤器,Servlet三种的组件的执行顺序是监听器》过滤器》Servlet但是为什么是这个顺序呢?结构决定功能,功能决定地位,地位决定权限,权限决定优先级查看全部
-
Web监听器的用途: 1,统计在线人数和在线用户。 2,系统启动时加载初始化信息。 3,统计网站访问量。 4,跟Spring结合。查看全部
-
servlet规范 application:上下文对象,是由容器创建和初始化的,它的范围是整个的web应用,而且整个web应用中只会有一个 application对象存在,当web服务器关闭时,就会将application对象销毁 session:是一种保存上下文信息的机制,它是针对每个会话的,它是放在服务器端,通过SessionId区分的,在浏览器和服务器结束后,都会将session销毁 request对象:是当客户端发送请求时,容器就会创建一个ServletRequest对象,来进行封装请求数据,同时会创建一个servletResponse对象来进行封装相应数据,当结束封装请求之后,就会销毁该对象 WEB监听器,就是监听这3个对象的创建,销毁,和它们的属性发生的变化查看全部
-
HttpSessionBindingListener 绑定:valueBound()方法 解除绑定:valueUnBound()方法 HttpSessionActivationListener(实现HttpSessionActivationListener接口必须也要实现Serializable接口) 钝化:sessionWillPassivate()方法 活化:sessionDidActivate()方法 以上两个监听器不需要在web.xml文件中注册查看全部
-
Session钝化机制: 把服务器中不经常使用的session对象暂时序列化到系统文件或是数据库系统中,当被使用时反序列化到内存中,整个过程由服务器自动完成查看全部
-
HttpSessionListener的主要用途: 1.统计在线人数 2.记录访问日志查看全部
-
ServletContextListener主要用途: 1.定时器 2.加载全局属性对象查看全部
-
ServletRequestListener主要用途: 1.读取参数 2.记录访问历史查看全部
-
监听对象划分: 1.ServletContext 用于监听应用程序环境对象 2.HttpSession 用于监听用户会话对象 3.ServletRequest 用于监听请求消息对象 监听事件划分: 1.监听域对象的创建和销毁 2.监听域对象中的属性的增加和删除 3.监听绑定到HttpSession域中的某个对象的状态查看全部
-
统计在线人数 1.在ServletContext(application)中设置一个Attribute(int)记录在线人数 2.用HttpSessionListener的实现类监听Session创建和销毁事件,Session创建更新在线人数+1,Session销毁更新在线人数-1 (注意在会话结束后Session仍驻留服务器内存一段时间) 记录在线用户的详细信息 1.在ServletContext(application)中设置一个Attribute(List<User>)记录在线用户信息 2.要获取用户信息需要request对象,而HttpSessionListener的实现类不能获取,因此需要使用ServletRequestListener的实现类,同时用户下线仍需要通过Session销毁判断,因此也需要使用HttpSessionListener的实现类 3.一个session对应多个request,通过sessionId(记录在User中)来识别一个用户的多个request 4.新增在线用户:有新的request创建时,且sessionId和已有用户不同,表示新增了在线用户,将该用户对象加入到List<User>并更新到ServletContext(application) 5.在线用户下线:当session销毁时,将通过sessionId将对应用户移除并更新到ServletContext(application)查看全部
-
Servlet3.0下使用注解(不用web.xml配置)的监听器 @WebListener("描述信息")查看全部
-
监听Session中对象状态变化的监听器: 注意:这里不是单独建立监听器,而是让被监听的对象的类实现xxxListener接口,也无需在web.xml注册 1.对象的绑定和解除绑定(即setAttribute/removeAttribute) implements HttpSessionBindingListener,还要实现序列化接口Serializable 绑定:valueBound方法 解除绑定:valueUnbound方法 2.对象的钝化和活化 implements HttpSessionActivationListener 钝化:sessionWillPassivate方法 活化:sessionDidActivate方法查看全部
举报
0/150
提交
取消