-
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对象 有两个事件处理方法: contextInitialized方法: public void contextInitialized( ServletContextEvent sce ) ServletContext创建时调用 参数 ServletContextEvent 事件对象,可以获取ServletContext对象以及一些初始化参数 例如: 获取ServletContext对象: ServletContext sc = sce.getServletContext(); 获取初始化参数:sc.getInitParmeter("参数名称"); 初始化参数在web.xml中配置: <context-param> <param-name>initParam</param-name> <param-value>mocc</param-value> </context-param> 也可以往ServletContext里放一些值进去, sc.setAttribute("name",obj), 然后在其它地方获取getAttribute("name") contextDestroyed方法: public void contextDestroyed( ServletContextEvent sce ) ServletContext销毁时调用 主要用于数据库链接关闭时释放一些资源,以免过度的占用。查看全部
-
监听器的启动顺序查看全部
-
监听器的例子: 1、实现ServicelContextListener接口 contextInitialized() contextDestoryed() 2web.xml中注册 <listener> <listener-class>类的完整路径</listener> </listener>查看全部
-
Web监听器的用途: 1,统计在线人数和在线用户。 2,系统启动时加载初始化信息。 3,统计网站访问量。 4,跟Spring结合。查看全部
-
@JSP监听器——概述 1、监听器:指专门用于对其他对象身上发生的【事件或状态改变】进行监听和相应处理的对象。当被监听的对象【发生变化】时,立即采取相应的行动。 ***注意:必须发生变化才能调用 2、监听对象:ServletContext:application(整个应用只存在一个)、HttpSession:session(针对每一个会话)、ServletRequest:request(客户请求) 3、监听内容:创建、销毁、属性改变事件 4、可以在时间发生前、发生后进行一些处理查看全部
-
1,绑定到Session中的 对象有多种状态,分别是 绑定 解除绑定 钝化 活化。 绑定 是保存,通过session.setattribute把对象保存到session的对象当中,解除绑定,remove。钝化就是将session持久化存储设备上。活化就是将session对象从一个存储设备上进行恢复。 2,session的钝化机制: session正常是放到服务器内存当中的,当在线用户很多时,session内存的开销是巨大的,会直接影响web服务器的性能,session的钝化机制就会解决这个问题 session钝化的本质就是把服务器不经常使用的session对象暂时序列化到系统文件,整个的过程是由服务器自动完成的 3,Tomcat中两种Session钝化管理器 首先session钝化机制是由sessionManager管理 1)第1种管理器是StandarManager org.apache.catalina.session.StandarManager 当Tomcat服务器关闭或者重启时tomcat服务器会将当前内存中的session对象钝化到服务器文件系统中; 另一种情况是web应用程序被重新加载时,内存中的session对象也会被钝化到服务器的文件系统中 2)Persistentmanager org.apache.catalina.session.Persistentmanager 首先在钝化的基础上进行扩张,第一种情况如上面1,第2种如2,第3种情况,可以配置主流内存的session对象数目,将不长使用的session对象保存到系统文件或数据库,当用时再重新加载 默认情况下,Tomcat提供2个钝化驱动类 4,servlet规范: 2中接口:HttpServletBindingListener HttpSessionActionListener 5,实例部分: 当对象实现Persistentmanager的接口之后,这个对象被session绑定了,这时会触发事件,执行方法查看全部
-
监听器总结续<br> 二、Listenner的注册<br> Javaweb的这些特别的监听器注册比较简单,因为ServletRequest、HttpSession、ServletContext对象都是容器创建的,所以需要它们的监听器的话,只需要在应用的web-info的web.xml里配置即可:<br> <listener><br> <listener-class>com.test.listener.MyHttpSessionAttributeListener</listener-class><br> <listener-class>com.test.listener.MyServletContextAttributeListener</listener-class><br> <!— 多个实现相同的Listenner接口,在执行时是按web.xml注册出现的来决定。 —><br> </listener><br> 注意:感知型监听器HttpSessionBindingListener、HttpSessionActivationListener不需要注册。<br> 三、应用场景:<br> 由于ServletRequest、HttpSession、ServletContext对象都是容器创建的,什么时候创建,用户都不知道。通过实现这些对象的监听器后,就可以得知了。比如:<br> 1>在ServletContextLintener监听器的contextInitialized方法中,进行应用级的资源初始化以便提高效率,在contextDestroyed方法中对应用级的资源进行释放。<br> 2>又比如web应用中,会存在会话,通常的作法是将当前登录的用户存放在session会话中。那么如何统计在线人数话,如何显示出当前登录的用户呢。如何踢出某些已登录的用户呢。就可以通过HttpSessionAttributeListener监听器的attributeAdded方法,等等。<br> 四、优先级顺序<br> 监听器->过滤器->Servlet<br> 五、在Servlet3.0下的使用<br> 通过在类前添加注解@WebListener即可,不用在web.xml中配置,在servlet3.0中监听器没有顺序查看全部
-
监听器总结: 一监听器分类 在Servlet规范中定义了多种类型的监听器,它们用于监听的事件源分别为SerlvetConext,HttpSession和ServletRequest这三个域对象。 Servlet规范针对这三个对象上的操作,又把这多种类型的监听器划分为三种类型: 1>监听三个域对象创建和销毁的事件监听器 2>监听域对象中属性的增加和删除的事件监听器 3>监听绑定到HttpSession域中的某个对象的状态的时间监听器。 a、如三个域对象的创建与销毁方法签名: ServletRequestListener有以下两个方法 void requestDestroyed(ServletRequestEvent sre) void requestInitialized(ServletRequestEvent sre) HttpSessionListener有以下两个方法 void sessionCreated(HttpSessionEvent se) void sessionDestroyed(HttpSessionEvent se) ServletContextListener void contextDestroyed(ServletContextEvent sce) void contextInitialized(ServletContextEvent sce) b、三个类型对象域中属性增、删、改的监听器(3个) ServletContextAttributeListener, HttpSessionAttributeListener, ServletRequestAttributeListener c、感知型监听器(2个):监听自己何时被帮到session上,何时解绑;何时被钝化,何时被活化(序列化到某个存储设置中)。 注意:这种监听器不需要注册。某个javabean实现这些接口后就可以监听何时被绑定、解绑或被激活或钝化。 HttpSessionBindingListener:实现该接口的类,能检测自己何时被Httpsession绑定和解绑 HttpSessionActivationListener:实现该接口的类(要求些javabean必须是实现了Serializable接口的),能监测自己何时随着HttpSession一起激活和钝化。查看全部
-
1.统计在线人数:使用ServletSessionListener监听器的初始化和销毁实现增加和删除 2.在线用户信息:使用ServletRequestListener监听器的初始化实现获取用户信息 3.保存:保存于全局的getSession.getServletContext().getAttribute("","")里面 4.${userNumber}是EL表达式,可以获取userNumber的值查看全部
-
@WebListener的常用属性查看全部
-
servlet3.0下监听器的用法:在监听器中加@WebListener 注解 此方法无法去定义监听器的顺序查看全部
-
使用servlet3.0的前提条件查看全部
-
servletContext监听器查看全部
-
监听器的启动顺序查看全部
举报
0/150
提交
取消