java web中监听器的使用

    xiaoxiao2021-03-26  20

    使用Listener类 当java  web应用程序在web容器中运行时,在java web应用程序内部会不断发生各种事件,例如web应用的启动,暂停,销毁等。以及web应用中session开始和结束 这些web应用对开发者来说通常是看不见的。其实在servletapi中。提供了大量的监听器来监听web应用事件,其中Listener类是最为常用的。此类允许当web内部事件发生时回掉事件 监听器的方法。 2.Listener基础。 在java  web应用程序中使用listener时,需要先定义Listener实现类,然后通过Annoation或在web.xml文件中进行配置Listener 与AWT事件编程是完全相同的。如下是web事件监听器的接口。 1)ServletContextListener监听web应用的启动和关闭 2)ServletContextAttributeListener监听ServletContext范围内属性的改变 3)ServletRequestListener监听用户的请求 4)ServletRequestAttributeListener监听ServletRequest范围内(request)内属性的变化 5)HttpSessionListener监听用户session的开始和结束 6)HttpSessionAttributeListener监听HttpSession范围内session内属性的改变。 Filter过滤器,如果有一个页面配置了多个Filter,其执行顺序为,在web.xml中配置的顺序,首先执行完成的过滤器是,最后配置的那个过滤器。 实例一、创建一个ServletContex的监听器。 ServletContextListener是最常用的Listener,可以在当前web应用被加载 时对web应用的相关资源进行初始化操作:创建数据库连接池,创建spring的ioc容器,读取当前web应用的初始化参数 步骤如下: 1.创建一个类HelloServletContextListener实现ServletContextListener接口 晚上两个接口中所包含的两个方法。 2.配置该监听器。 <!-- 配置Listener -->   <listener>   <listener-class>com.listener.test.HelloServletContextListener   </listener-class>   </listener> 实例二、 ServletRequestListener&HttpSessionListener 步骤同上也可以实现相关接口监听器的实现 最后利用ServletRequestListener,HttpSessionListener,以及ServeletContextListener,可以把 application,session,request的生命周期进一步作为了解。 request:是一个请求,当一个响应返回时,即被销毁。当发一个请求时, 当浏览器访问到某个页面时,只是发出一个request的请求。发送完毕返回之后就立即销毁,此外,它不能带有任何的 请求参数。平常的一个request.setAttribute是发送的一个request的请求对象。 关于session对象的创建时间问题。 1.当浏览器第一次访问web应用的一个jsp或者servlet时,且该jsp或servlet中还需要创建 创建session对象。此时才会创建session对象,默认情况下每个jsp页面这个属性都是true  session="true",所以当某个web应用在 某个浏览器中第一次访问某个页面都会创建一个session对象。 2.session的销毁: session的销毁有如下三种方法,一种是调 session.invalidate().第二种是夫妻关闭当前web应用。 但是关闭当前web应用存在session持久化问题,所以它并不能从根本上解决关闭sesion的问题 第三种是session过期,设置过期时间为:session.setMaxInactiveInterval(300).单位是秒 3.关闭浏览器并不意味着session被销毁。还可以通过sessionID找到服务器对象。 4.application贯穿于当前web应用的整个生命周期,当前web应用被加载时创建application。当前web应用被卸载时销毁application对象 Listener小结 监听域对象(pageContext request,application)自身的创建和销毁的事件监听器 1.ServletContextListener 2.ServletRequestListener 3.HttpSessionListener 在每个监听器中都有两个方法。 1)在域对象创建后立即被调用的方法 2)在域对象销毁前被调用的方法 监听ServletContext,HttpSession,ServletRequest中添加属性,替换属性,移除属性的时间监听器 1)以ServletRequestAttributeListener为例 有如下三个方法添加属性,移除属性,替换属性 attributeAdded(),attributeRemoved(),attributeReplace() api: ServletRequestAttributeEvent getName()获取属性名字 getValue()获取属性的值 HttpSessionBindListener 1)监听实现该接口的java类对象被绑定到sesion或从session中解除绑定事件 当前对象被绑定到sesion时调用该方法 public void valuedBound(HttpSesoinBindingEvent,event) 当前对象从sesion中解除绑定调用该方法。 public void valueUnboud(HttpSessionindingEvent event) 注意该事件不需要再web.xml文件中进行配置。 HttpSessionBindEvent getName(); getValue(); getSession(); HttpSessionActivationListener(该监听器较少被使用) 监听实现了该接口和Seralizable接口(若不实现该接口,则只能写到磁盘上都不出来) 的java类对象 典例。 利用HttpSessonListener可以和知道是否有新访客访问当前we应用 public vidsessionCreateed()被调用说明有新访客到来 public' void sessioDestroye()被调用说明访客离开 可以使用一个jsp页面显示当前访客的ip 访客共有**人,匿名**人,注册用户**人 190.169.213(匿名) 剔除 剔除效果:若真该访问一个必须登录的效果,在点击刷新,发现该页面无法访问,而先需要登录。 剔除操作:即让其session失效。
    转载请注明原文地址: https://ju.6miu.com/read-658305.html

    最新回复(0)