java技术--监听器Listener

1.Listener的定义与作用

   1.1.监听器Listener就是在application,session,request三个对象创建,销毁,或者往其中添加修改删除属性时自动执行代码的功能组件
   1.2.Listener是Servlet的监听器,可以监听客户端的请求,服务端的操作等
  1. Listener的分类与使用

2.1.ServletContext(Web应用)监听

  (1)ServletContextListener接口:用于监听Web应用的启动和关闭;
                public void contextInitialized(ServletContextEvent sce) //上下文初始化
              public void contextDestoryed(ServletContextEvent sce) //上下文销毁
              public ServletContext getServletContext(); //ServletContextEvent事件:取得一个ServletContext(application)对象
  (2)ServletContextAttributeListener接口:用于监听Servlet上下文属性的改变(增删改属性)
              public void attributeAdded(ServletContextAttributeEvent scab);//增加属性
           public void attributeRemoved(ServletContextAttributeEvent scab);//属性删除
           public void attributeRepalced(ServletContextAttributeEvent scab);属性替换

2.2.Session监听

Session属于Http协议下的内容,接口位于javax.servlet.http.*包下。
   (1)HttpSessionListener接口:用于监听用户session的开始和结束
          public void sessionCreated(HttpSessionEvent se); //session创建
          public void sessionDestoryed(HttpSessionEvent se); //session销毁  
    (2)HttpSessionAttributeListener:用于监听HttpSession范围(session)内属性的改变
           public void attributeAdded(HttpSessionBindingEvent se); //增加属性
           public void attributeRemoved(HttpSessionBindingEvent se);//删除属性
           public void attributeReplaced(HttpSessionBindingEvent se);//替换属性     
   扩展:session销毁有两种情况:
        (1)session超时,web.xml配置 :session120分钟后超时销毁
        <session-config>
              <session-timeout>120</session-timeout>    
        <session-config>    
        (2)手工使session失效方法
         public void invalidate()  {session.invalidate();}

2.3.Request监听

      (1)ServletRequestListener:用于监听用户的请求(创建,销毁)
             public void requestInitialized(ServletRequestEvent sre);//request初始化
          public void requesyDestoryed(ServletRequestEvent sre);//request销毁  
    (2)ServletRequestAttributeListener:对Request属性的监听(增删改属性)
          public void attributeAdded(ServletRequestAttributeEvent srae);//增加属性
          public void attributeRemoved(ServletRequestAttributeEvent srae);//属性删除
          public void attributeReplaced(ServletRequestAttributeEvent srae);//属性替换       

3.在web.xml中配置
Listener的配置信息必须在Filter和Servlet的配置之前,Listener的初始化(ServletContextListener初始化)比Servlet和Filetr都优先,而销毁比Servlet和Filter都慢
4.Spring监听器ContextLoaderListener的作用

   (1)Spring提供ServletContextListener接口的一个实现类ContextLoaderListener监听器(Spring已封装) 
   (2)在启动Tomcat容器的时候,该类的作用就是自动装载ApplicationContext的配置信息
   (3)ContextLoaderListener会读取这些XML文件并产生WebApplicationContext对象(Spring自动生成该对象)   
   (4)将这个对象放置在ServletContext的属性里,这样只要得到Servlet就可以得到WebApplicationContext对象,并利用这个对象访问spring容器管理的bean
   (5)如果没有设置contextConfigLocation的初始参数则会使用默认参数WEB-INF路径下的application.xml文件
   (6)默认路径下如果没找到就会报错
   扩展:<listener>
              <listener-class> org.springframework.web.context.ContextLoaderListener
        </listener-class>
        Spring配置文件中改监听器的作用就是为了服务器启动时,自动装载ApplicationContext的配置信息,最终获得配置信息中的bean
          <listener>
              <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
	      </listener>
        1.org.springframework.web.context.ContextLoaderListener:只负责监听web容器启动和关闭的事件
        2.但如果spring容器中的Bean需要request,session,globalsession作用域的支持,spring容器本身就必须获得web容器的HTTP请求事件,
        以HTTP请求的事件"驱动"Bean作用域的控制逻辑
        3.使用request,session,globalsession这些作用域之前,必须在web容器中进行一些额外的配置
        4.就需要配置org.springframework.web.context.request.RequestContextListener
                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值