您的位置:首页 > 编程语言 > Java开发

java web中监听器的使用

2017-02-04 17:55 423 查看
使用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失效。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: