JavaWeb中的监听器
介绍一共八大监听(六大监听+两个感知监听)事件源:三大域(六大监听)>ServletContext#生命周期监听:ServletContextListener,内部有两个方法,一个在出生时调用,一个在死亡时调用void contextInitialized(ServletContextEvent sce):服务器开启时(一般这里会有多一些操作,因为重新启动后参数重新赋值,可能上一次配置的值被更新,防止紊乱)void contextDestroyed(ServletContextEvent sce):服务器关闭时#属性监听:ServletContextAttributeListener:三个方法:分别在添加,修改,移除时调用void attributeAdded(ServletContextAttributeEvent scab):添加属性时void attributeRemoved(ServletContextAttributeEvent scab):移除属性时void attributeReplaced(ServletContextAttributeEvent scab):修改属性时>HttpSession#生命周期监听 :HttpSessionListener,内部有两个方法,一个在出生时调用,一个在死亡时调用void sessionCreated(HttpSessionEvent se):创建Session时void sessionDestroyed(HttpSessionEvent se):销毁Session时#属性监听:HttpSessionAttributeListener:三个方法:分别在添加,修改,移除时调用void attributeAdded(HttpSessionBindingEvent se):添加属性时void attributeRemoved(HttpSessionBindingEvent se):移除属性时void attributeReplaced(HttpSessionBindingEvent se)):修改属性时>ServletRequest#生命周期监听 :ServletRequestListener,内部有两个方法,一个在出生时调用,一个在死亡时调用void requestDestroyed(ServletRequestEvent sre):创建requestvoid requestInitialized(ServletRequestEvent sre):销毁Request时#属性监听:ServletRequestAttributeListener:三个方法:分别在添加,修改,移除时调用void attributeAdded(ServletRequestAttributeEvent srae):添加属性时void attributeRemoved(ServletRequestAttributeEvent srae):移除属性时void attributeReplaced(ServletRequestAttributeEvent srae):修改属性时#感知监听1:序列化与反序列化(该监听不用注册):在JavaBean上实现HttpSessionBindingListener接口,实现两个方法void valueBound(HttpSessionBindingEvent event):Session添加该JavaBean对象时void valueUnbound(HttpSessionBindingEvent event):Session移除该JavaBean对象时注释:简单说在服务器重启时(比如系统维护重启,这是瞬时的),所有Session都会被保存起来放到一个地方,重启后服务器读取该保存文件,相应Session数据不 丢失弊端:如果实现该接口那么也就意味着该JavaBean永久和Web绑定在一起#感知监听2:活化-钝化(也不用注册,需要已经在Context中配置钝化活化参数,并且该JavaBean实现了Serializable接口才行):在JavaBean上实现HttpSessionActivationListener接口,实现两个方法void sessionWillPassivate(HttpSessionEvent se):Session中的该类会随着Session一起被钝化时void sessionDidActivate(HttpSessionEvent se):Session中的该类随着Session一起被活化时注释:关于Session钝化与活化,简单说就是把JavaBean附随给Session一起储存到了硬盘中,详细请参见session中活化与钝化的介绍http://blog.csdn.net/lyandyhk/article/details/50772903基本操作使用:创建Listener类,实现上述某一个接口,实现方法配置:需要注册,即在web.xml中加入(感知接口无需)<listener><listener-class>cn.xx.xx.xxx</listener-class></listener>事件源的作用:> ServletContextEvent :ServletContext getServletContext();> HttpSessionEvent :HttpSession getSession();> ServletRequestEvent :ServletRequest getServletRequest();ServletContext getServletContext();下面三者的父类是对应的上面三者,也就是说父类的获取方法子类也能用>ServletContextAttributeEventString getName();Object getValue();>HttpSessionBindingEventString getName();Object getValue();HttpSession getSession(); //该方法有地方写了,有地方没写,也就是父类那个方法>ServletRequestAttributeListener都有的方法:String getName();Object getValue();
JavaWeb中的监听器
最新推荐文章于 2024-09-05 07:24:18 发布