zoukankan      html  css  js  c++  java
  • jsp>监听器 小强斋

    监听器

    Servlet 程序的主要分类?
    · 标准 Servlet(JSP) —— MVC
    · 过滤 Servlet(过滤器)
    · 监听 Servlet(监听器)

    一、什么是监听器?
    是指针对于整个 WEB 环境的监听,主要有以下三类:
    · ServletContext:Servlet 上下文
    · Session:对Session 监听
    · Request 监听

    二、对 ServletContext 监听,上下文监听主要是针对容器的:初始化、销毁、属性操作
    在 WEB 端实现监听 = 实现一系列的监听接口
    1、ServletContextListener:对整个Servlet 上下文监听(启动、销毁)
    public void contextInitialized(ServletContextEvent sce):上下文初始化
    public void contextDestroyed(ServletContextEvent sce):上下文销毁
    ServletContextEvent 事件:取得一个ServletContext(application)对象
    public ServletContext getServletContext()
    2、ServletContextAttributeListener:对Servlet 上下文属性的监听
    public void attributeAdded(ServletContextAttributeEvent scab):增加属性(setAttribute)
    public void attributeRemoved(ServletContextAttributeEvent scab):属性删除(removeAttribute)
    public void attributeReplaced(ServletContextAttributeEvent scab):属性替换(第二次设置同一个属性)
    ServletContextAttributeEvent 事件:能取得设置属性的名称与内容
    public String getName():得到属性名称
    public Object getValue():得到属性的值

    package cn.listener ;
    import javax.servlet.* ;
    public class ServletContextDemo
    implements ServletContextListener,ServletContextAttributeListener
    {
    private ServletContext application = null ;
    // 实现方法
    public void contextInitialized(ServletContextEvent sce)
    {
    this.application = sce.getServletContext() ;
    System.out.println("** 上下文初始化 ...") ;
    System.out.println("** 当前虚拟目录的绝对路径:"+this.application.getRealPath("/")) ;
    }
    public void contextDestroyed(ServletContextEvent sce)
    {
    System.out.println("** 上下文销毁 ...") ;
    }
    public void attributeAdded(ServletContextAttributeEvent scab)
    {
    System.out.println("** 增加属性:"+scab.getName()+" --> "+scab.getValue()) ;
    }
    public void attributeRemoved(ServletContextAttributeEvent scab)
    {
    System.out.println("** 删除属性:"+scab.getName()+" --> "+scab.getValue()) ;
    }
    public void attributeReplaced(ServletContextAttributeEvent scab)
    {
    System.out.println("** 替换属性:"+scab.getName()+" --> "+scab.getValue()) ;
    }
    };
    /*
    <listener>
    <listener-class>cn.listener.ServletContextDemo</listener-class>
    </listener>
    */

    三、监听 session 的创建、销毁、属性操作

    Session 属于http 协议下的内容:javax.servlet.http.HttpSessionXxxx
    1、HttpSessionListener:对session 的整体状况的监听
    public void sessionCreated(HttpSessionEvent se):session创建

    public void sessionDestroyed(HttpSessionEvent se):session销毁
    HttpSessionEvent 事件:
    public HttpSession getSession():取得当前操作的session
    2、HttpSessionAttributeListener:对session 的属性监听
    public void attributeAdded(HttpSessionBindingEvent se):增加属性
    public void attributeRemoved(HttpSessionBindingEvent se):属性删除
    public void attributeReplaced(HttpSessionBindingEvent se):属性替换

    HttpSessionBindingEvent 事件:
    public String getName():取得属性的名称
    public Object getValue():取得属性的值
    public HttpSession getSession():取得当前的session

    package cn.listener ;
    import javax.servlet.http.* ;
    public class HttpSessionDemo
    implements HttpSessionListener,HttpSessionAttributeListener
    {
    private HttpSession session ;
    // 实现方法
    public void sessionCreated(HttpSessionEvent se)
    {
    this.session = se.getSession() ;
    System.out.println("** Session 创建 ....") ;
    System.out.println("** SessionID --> "+this.session.getId()) ;
    }
    public void sessionDestroyed(HttpSessionEvent se)
    {
    System.out.println("** Session 销毁 ....") ;
    }
    public void attributeAdded(HttpSessionBindingEvent se)
    {
    System.out.println("** Session 增加属性:"+se.getName()+" --> "+se.getValue()) ;
    }
    public void attributeRemoved(HttpSessionBindingEvent se)
    {
    System.out.println("** Session 删除属性:"+se.getName()+" --> "+se.getValue()) ;
    }
    public void attributeReplaced(HttpSessionBindingEvent se)
    {
    System.out.println("** Session 替换属性:"+se.getName()+" --> "+se.getValue()) ;
    }
    };
    /*
    <listener>
    <listener-class>cn.listener.HttpSessionDemo</listener-class>
    </listener>
    */


     


     

  • 相关阅读:
    MySQL与Oracle数据库差异对比
    阿里ECS服务器远程桌面访问报错
    单分派和多分派
    博客主题
    论文阅读:LIC-Fusion: LiDAR-Inertial-Camera Odometry
    如何科研(自动化所 张世峰)
    读论文
    SLAM十四讲第二版项目代码总结
    LeetCode 982. Triples with Bitwise AND Equal To Zero
    论文阅读:Visual-Inertial Localization With Prior LiDAR Map Constraints
  • 原文地址:https://www.cnblogs.com/xiaoqiangzhaitai/p/5637573.html
Copyright © 2011-2022 走看看