JavaWeb的三大组件之事件监听组件(Listener)

JavaWeb监听器

三大组件:

  1. Servlet
  2. Listener
  3. Filter

监听器:

  1. 它是一个接口,内容由我们来实现;
  2. 它需要注册,例如注册在按钮上!
  3. 监听器中的方法,会在特殊事件发生时被调用!

 

JavaWeb中的监听器

一、生命周期监听与属性监听

ServletContext

     生命周期监听:ServletContextListener,它有两个方法,一个在创建时调用,一个在销毁时调用;

  •                void contextInitialized(ServletContextEvent sce):创建Servletcontext时
  •                void contextDestroyed(ServletContextEvent sce):销毁Servletcontext时

     属性监听:ServletContextAttributeListener,它有三个方法,一个在添加属性时调用,一个在替换属性时调用,

                                最后一个是在移除属性时调用。

  •                void attributeAdded(ServletContextAttributeEvent event):添加属性时;
  •                void attributeReplaced(ServletContextAttributeEvent event):替换属性时;
  •                void attributeRemoved(ServletContextAttributeEvent event):移除属性时;

HttpSession

     生命周期监听:HttpSessionListener,它有两个方法,一个在创建时调用,一个在销毁时调用;

  •                void sessionCreated(HttpSessionEvent se):创建session时
  •                void sessionDestroyed(HttpSessionEvent se):销毁session时

     属性监听:HttpSessioniAttributeListener,它有三个方法,一个在添加属性时调用,一个在替换属性时调用,

                              最后一个是在移除属性时调用。

  •                void attributeAdded(HttpSessionBindingEvent event):添加属性时;
  •                void attributeReplaced(HttpSessionBindingEvent event):替换属性时
  •                void attributeRemoved(HttpSessionBindingEvent event):移除属性时

ServletRequest

     生命周期监听:ServletRequestListener,它有两个方法,一个在创建时调用,一个在销毁时调用;

  •                void requestInitialized(ServletRequestEvent sre):创建request时
  •                void requestDestroyed(ServletRequestEvent sre):销毁request时

     属性监听:ServletRequestAttributeListener,它有三个方法,一个在添加属性时调用,一个在替换属性时调用,

                              最后一个是在移除属性时调用。

  •                void attributeAdded(ServletRequestAttributeEvent srae):添加属性时
  •                void attributeReplaced(ServletRequestAttributeEvent srae):替换属性时
  •                void attributeRemoved(ServletRequestAttributeEvent srae):移除属性时
  1. javaWeb中完成编写监听器:
  • 写一个监听器类:要求必须去实现某个监听器接口;
  • 注册,是在web.xml中配置来完成注册!
<listener>
    <listener-class>包名.类名</listener-class>
 </listener>
  1. 事件对象:
  • ServletContextEvent:ServletContext getServletContext()
  • HttpSessionEvent:HttpSession getSession()
  • ServletRequest:
  • ServletContext getServletContext();
  • ServletReques getServletRequest();
  • ServletContextAttributeEvent:
  • ServletContext getServletContext();
  • String getName():获取属性名
  • Object getValue():获取属性值
  • HttpSessionBindingEvent:略
  • ServletRequestAttributeEvent :略

 

二、感知监听(都与HttpSession相关)

  • 它用来添加到JavaBean上,而不是添加到三大域上!
  • 这两个监听器都不需要在web.xml中注册!

1、JavaBean中继承HttpSessionBindingListener接口:感知Bean对象是否存放到Session(存放触发,删除触发)

2、JavaBean中继承HttpSessionActivationListener,java.io.Serializable接口:Bean对象是否跟随Session钝化(钝化触发,

                                                                                                                          活化触发)Serializable接口用来序列化

      Session的钝化:即会话在一定时间内没有操作,Session信息自动保存至硬盘中以节省内存空间的技术

           --------具体操作:Tomcat7/conf/context.xml添加以下代码,就会将session

                                       保存至Tomcat7\work\Catalina\localhost\项目名\mysession中,如果保存属性有Bean对象

                                       ,要将Bean对象实现序列化(即继承java.io.Serializable接口)。

    <Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1">
		<Store className="org.apache.catalina.session.FileStore" directory="mysession"/>
    </Manager>	

总结:看视频说Session钝化后保存至硬盘,Session的活化可在浏览器重新打开(即一个会话关闭后)再次取出对象信息;

           但实际经验是Session的生命周期只有一个会话,或许是我Tomcat的问题,在会话关闭后重新打开时虽然有保存Session

           信息到磁盘,但此时取不出Session信息。

           

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值