• javaee Listener


    Servlet API 中定义了几种监听器,大多数尽管不是全部,都将监听某种形式的会话活动,通过实现对应事件的监听器接口订阅某个事件,然后在部署描述符中添加 <listener> 配置,或者在该类中添加注释
    @javax.servlet.annotation.WebListener (但不需要同事使用这两种方式)
     
    如果需要,可以在单个类中实现多个监听器接口,当然,你不会希望将不同业务的代码添加到同一个类中。当某个事件发生时,将触发事件发布,然后容器将调用对应事件监听器中的方法。
     
    Listener
    监听三个域对象
    ServletContext
    ServletRequest
    HttpSession
    监听三个对象的创建和销毁
    ServletContextListener
    servlet 启动 和 销毁的时候会触发
    ServletRequestListener
    每次request 请求来 会触发, 刷新下页面就会触发
    HttpSessionListener
    一个浏览器只创建一次session
    创建:java中第一次调用 request.getSession 的时候
    销毁:
    session超时
    手动销毁 session
    服务器非正常关闭
     
    监听三个对象的属性变化 (添加 替换 删除)
    ServletContextAttributeListener
    application.setAttribute("aa","fffffff 66666 aaa <br />aaaa");
    System.out.println("add"+event.getName()+event.getValue());
    application.setAttribute("aa","f33333 aaa <br />aaaa");
    application.removeAttribute("aa");
    ServletRequestAttributeListener
     
    HttpSessionAttributeListener
     
     
    监听session中javabean的状态
    这2个接口需要javabean实现,是让javabean感知到自己的状态
    HttpSessionActivationListener (钝化(session 写入 磁盘)和活化 (磁盘写入session))
    钝化: javabean 从session 持久化到磁盘上
    活化: javabean 从磁盘写入session 中
    也是要写到指定的类上 要实现2个接口 implements HttpSessionActivationListener,Serializable{
     
    可以通过配置文件修改 javabean 钝化 活化 的时间
    /META-INFO/context.xml
    maxIdleSwap="1" 多长时间不用
    directory 目录下
    <?xml version="1.0" encoding="UTF-8"?>
    <Context >
    <Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1">
    <Store className="org.apache.catalina.session.FileStore" directory="gwyy" />
    </Manager>
    </Context>
     
     
     
    HttpSessionBindingListener (session的绑定和解绑 )
    需要往session里面new 哪个类就在哪个类上加绑定接口
    session.setAttribute("p",new Person(1,"tom"));
    要往 Person 类上加接口
     
     
     
    让容器继承监听器 ,然后加上@WebListener
    @WebListener
    public class SessionListener implements HttpSessionListener, HttpSessionIdListener{}
    web.xml 注册
    <listener>
    <listener-class>me.liangtian.web.servlet.myServletLis</listener-class>
    </listener>
    <listener>
    <listener-class>me.liangtian.web.servlet.myRequestLis</listener-class>
    </listener>
    <listener>
    <listener-class>me.liangtian.web.servlet.mySessionLis</listener-class>
    </listener>
     
     
     
  • 相关阅读:
    c语言中重要函数
    python 类属性、对象属性
    windows下PIP安装模块编码错误解决
    python爬取百思不得姐视频
    ubuntu下刷新dns
    pycharm设置安装python第三方插件
    python将str转换成字典
    pyqt加载图片
    Python端口扫描器
    自己构造用于异步请求的JSON数据
  • 原文地址:https://www.cnblogs.com/gwyy/p/9010060.html
Copyright © 2020-2023  润新知