监听器

监听器:
    问题:什么是监听器?监听器有什么作用?
    
        概念:
            1.事件  ActionEvent
            2.事件源 JButton
            3.监听器 ActionListener
            4.注册监听 addActionListener();
            
         监听器就是可以监听某一个事件在执行一个特定操作时,我们可以让其触发一个操作。    
        
        可以在满足特定条件的情况下执行一段操作。
        
        
            问题:我们现在学习的是javaweb,那么在javaweb中有什么监听器,有什么作用?
        

            javaweb中的监听器,主要用于监听javaweb中常用对象

            (request(HttpServletRequest),session(HttpSession),application(ServletContext))的三种类型操作

            1.对象的创建与销毁
            2.对象的属性变化
            3.session绑定javaBean.
            
        在javaweb中servlet规范中定义了三种技术  servlet  Listener Filter
        
        1.监听创建与销毁
            HttpServletRequest
                监听器:ServletRequestListener可以监听request对象的创建与销毁.                
            HttpSession
                监听器:HttpSessionListener可以监听session对象的创建与销毁.
            ServletContext
                监听器:ServletContextListener可以监听application对象的创建与销毁。
                
        2.监听web对象的属性变化
            HttpServletRequest属性变化
                监听器:ServletRequestAttributeListener监听request对象的属性变化
            HttpSession属性变化
                监听器:HttpSessionAttributeListener 监听session对象的属性变化
            ServletContext属性变化
                监听器:ServletContextAttributeListener监听application对象的属性变化。
    ------------------------------------------------------------------------------------
    演示关于web中监听器怎样使用?
    
        创建监听器步骤:
            1.创建一个类,去实现指定的监听器接口.
            2.重写接口中方法。
            3.在web.xml文件中配置注册监听。

            
            演示:
                1.监听application对象的创建与销毁.
                    问题:application对象什么时候创建,什么时候销毁的?
                        application对象是服务器启动时创建,
                        服务器关闭时销毁。
                        
                2.监听session对象创建与销毁
                    问题:session对象什么时候创建,什么时候销毁?
                        
                        session对象创建:
                            reqeust.getSession();它是用于获取session.
                            是否创建,分以下几种情况:
                                1.请求中如果没有jsessionid,那么就是创建session对象。
                                2.如果请求头中有jsessionid值:
                                    1.如果在服务器端,有一个session的id值与其一样,不创建,直接使用。
                                    2.如果在服务器端,没有这个session的id值,那么会创建。
                        session销毁:
                            1.默认超时  30分钟
                            2.设置session超时时间
                                setMaxInactiveInterval(int interval)
                            3.invalidate()手动销毁.
                            4.关闭服务器
                3.监听request对象创建与销毁
                    问题:request对象什么时候创建,什么时候销毁?
                        请求发生,request对象创建,响应产生request对象销毁。
            ----------------------------------------------------------------------
            演示监听属性变化
                演示监听session的属性变化
                
                问题:在监听器中是否可以得到属性值?
                    
                    常识:在java的监听机制中,是可以在监听器中获取事件源的。
                    
                    我们在开发中,如果有到了事件触发机制,那么一般情况下,都可以使用
                    方法的参数(事件对象)来获取想要的信息.
                
                        
        ----------------------------------------------------------                
    思考一个问题:这些监听器在开发中有什么用?
        在主流中应用比较少,但是可以完成一些性能监试操作。
        
    -----------------------------------------------------------------------------
    监听器案例:
        
        功能:扫描session对象在指定时间内没有使用,人为销毁。
        
        分析:
            1.怎样确定session多长时间没有使用?
                当前时间-最后使用时间(public long getLastAccessedTime())
                
            2.什么时候开始扫描,扫描多长时间?
                可以使用Timer完成
                
        完成定时扫描session,如果超时没有使用,销毁案例:
            
            1.要将所有的session对象得到,保存到集合中。
                1.创建一个监听器 ServletContextListener,它服务器启动时,创建一个集合保存到ServletContext域。
                2.创建一个监听器 HttpSessionListener,当创建一个session时,就从ServletContext域中获取集合,将session对象储存到集合中。
                
            2.定时扫描
                
                问题:
                    1.session超时,不能只销毁session,还要从集合中移除。
                    
                    2.我们的操作,它是多线程的,要考虑集合的同步问题。
                        1.集合需要是线程安全的。
                        2.需要使用迭代器进行遍历。
                        
                
    ---------------------------------------------------------------------------------------
    session绑定javaBean
        
        1.HttpSessionBindingListener
            这个监听器,可以让javaBean对象,感知它被绑定到session中或从session中移除。
        2.HttpSessionActivationListener
            这个监听器,可以让javaBean感知,被钝化或活化。
        这两个监听器特点;
            1.它们是由javaBean实现.
            2.它们不需要在web.xml文件中配置.

                      


     钝化--->将session中的javaBean保存到文件中.

     活化--->从文件中将javaBean直接获取。
                
           需要创建一个配置文件context.xml
           这个文件保存到META-INF目录下.
            <Context>
            <Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1">
             <Store className="org.apache.catalina.session.FileStore" directory="it315"/>
             </Manager>
              </Context>            
            
            
       
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值