博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Servlet(三) 监听器
阅读量:4333 次
发布时间:2019-06-07

本文共 5354 字,大约阅读时间需要 17 分钟。

Servlet监听器

所有事件都继承自 java.util.Event

分成三类:application范围、session范围和request范围

  • 监听器接口和注册

    • javax.servlet.ServletContextListener: 响应 ServletContext生命周期事件,Context创建之后,关闭之前会被调用
    • javax.servlet.ServletContextAttributeListener: 响应Context范围的属性 增删替换
    • javax.servlet.http.HttpSessionListener: 响应session创建 超时 失效事件
    • javax.servlet.http.HttpSessionAttributeListener:
    • javax.servlet.http.HttpSessionActivationListener: 响应session失效 激活事件
    • javax.servlet.http.HttpSessionBindingListener: 响应HttpSession中有 添加 删除 值时
    • javax.servlet.ServletRequestListener: 响应ServletRequest的创建or删除
    • javax.servlet.ServletRequestAttributeListener:
    • javax.servlet.AsyncListener: 异步操作监听器
  • Servlet3.0 - 3.1 两种方法实现

    • @WebListenerpublic class ListenerClass implements ListenerInterface{}
    • fully-qualified listener class
  • javax.servlet.ServletContextListener

    • public interface ServletContextListener extends EventListener {    void contextInitialized(ServletContextEvent var1);    void contextDestroyed(ServletContextEvent var1);}//监听器方法入参类型public class ServletContextEvent extends EventObject {    private static final long serialVersionUID = 1L;    public ServletContextEvent(ServletContext source) {        super(source);    }    public ServletContext ServletContextEvent() {        return (ServletContext)super.getSource();    }}
    • 通过入参ServletContextEvent中的ServletContextEvent()可以获取应用上下文获取数据

    • 对ServletContext创建和销毁做出反应

  • javax.servlet.ServletContextAttributeListener

    • public interface ServletContextAttributeListener extends EventListener {    void attributeAdded(ServletContextAttributeEvent var1);    void attributeRemoved(ServletContextAttributeEvent var1);    void attributeReplaced(ServletContextAttributeEvent var1);}//监听器方法入参类型public class ServletContextAttributeEvent extends ServletContextEvent {    private static final long serialVersionUID = 1L;    private final String name;    private final Object value;    public ServletContextAttributeEvent(ServletContext source, String name, Object value) {        super(source);        this.name = name;        this.value = value;    }    public String getName() {        return this.name;    }    public Object getValue() {        return this.value;    }}
  • javax.servlet.http.HttpSessionListener

    • public interface HttpSessionListener extends EventListener {    void sessionCreated(HttpSessionEvent var1);    void sessionDestroyed(HttpSessionEvent var1);}//监听器方法入参类型public class HttpSessionEvent extends EventObject {    private static final long serialVersionUID = 1L;    public HttpSessionEvent(HttpSession source) {        super(source);    }    public HttpSession getSession() {        return (HttpSession)super.getSource();    }}
  • javax.servlet.http.HttpSessionActivationListener

    • public interface HttpSessionAttributeListener extends EventListener {    void attributeAdded(HttpSessionBindingEvent var1);    void attributeRemoved(HttpSessionBindingEvent var1);    void attributeReplaced(HttpSessionBindingEvent var1);}//监听器方法入参类型public class HttpSessionBindingEvent extends HttpSessionEvent {    private static final long serialVersionUID = 1L;    private final String name;    private final Object value;    public HttpSessionBindingEvent(HttpSession session, String name) {        super(session);        this.name = name;        this.value = null;    }    public HttpSessionBindingEvent(HttpSession session, String name, Object value) {        super(session);        this.name = name;        this.value = value;    }    public HttpSession getSession() {        return super.getSession();    }    public String getName() {        return this.name;    }    public Object getValue() {        return this.value;    }}
    • HttpSessionBindingEvent extends HttpSessionEvent 所以 在HttpSessionBindingEvent 也能够拿到HttpSession对象
  • javax.servlet.http.HttpSessionActivationListener

    在分布式环境下,会用多个容器来进行负载均衡,有可能需要将session保存起来,在容器之间传递,ex一个容器内存不足,会将很少用到的对象转存刀其他容器上,这时候就会通知HttpSessionActivationListener

    • public interface HttpSessionActivationListener extends EventListener {    //钝化    void sessionWillPassivate(HttpSessionEvent var1);    //活化    void sessionDidActivate(HttpSessionEvent var1); }
  • javax.servlet.http.HttpSessionBindingListener

    • public interface HttpSessionBindingListener extends EventListener {    void valueBound(HttpSessionBindingEvent var1);    void valueUnbound(HttpSessionBindingEvent var1);}
  • javax.servlet.ServletRequestListener

    • public interface ServletRequestListener extends EventListener {    void requestDestroyed(ServletRequestEvent var1);    void requestInitialized(ServletRequestEvent var1);}//监听器方法入参类型public class ServletRequestEvent extends EventObject {    private static final long serialVersionUID = 1L;    private final transient ServletRequest request;    public ServletRequestEvent(ServletContext sc, ServletRequest request) {        super(sc);        this.request = request;    }    public ServletRequest getServletRequest() {        return this.request;    }    public ServletContext getServletContext() {        return (ServletContext)super.getSource();    }}
  • javax.servlet.ServletRequestAttributeListener

    • public interface ServletRequestAttributeListener extends EventListener {    void attributeAdded(ServletRequestAttributeEvent var1);    void attributeRemoved(ServletRequestAttributeEvent var1);    void attributeReplaced(ServletRequestAttributeEvent var1);}

转载于:https://www.cnblogs.com/houhou87/p/9949374.html

你可能感兴趣的文章
ThreadLocal为什么要用WeakReference
查看>>
删除本地文件
查看>>
FOC实现概述
查看>>
base64编码的图片字节流存入html页面中的显示
查看>>
这个大学时代的博客不在维护了,请移步到我的新博客
查看>>
GUI学习之二十一——QSlider、QScroll、QDial学习总结
查看>>
nginx反向代理docker registry报”blob upload unknown"解决办法
查看>>
gethostbyname与sockaddr_in的完美组合
查看>>
kibana的query string syntax 笔记
查看>>
旋转变换(一)旋转矩阵
查看>>
thinkphp3.2.3 bug集锦
查看>>
[BZOJ 4010] 菜肴制作
查看>>
C# 创建 读取 更新 XML文件
查看>>
KD树
查看>>
VsVim - Shortcut Key (快捷键)
查看>>
HDU5447 Good Numbers
查看>>
08.CXF发布WebService(Java项目)
查看>>
java-集合框架
查看>>
RTMP
查看>>
求一个数的整数次方
查看>>