Listener监听器(观察者设计模式)
    1.监听域对象产生和销毁
    2.监听域对象存值、修改、删除

    1. package listener;
    2. import javax.servlet.ServletRequestAttributeEvent;
    3. import javax.servlet.ServletRequestAttributeListener;
    4. import javax.servlet.ServletRequestEvent;
    5. import javax.servlet.ServletRequestListener;
    6. public class TestRequestListener implements ServletRequestListener, ServletRequestAttributeListener {
    7. @Override
    8. public void requestDestroyed(ServletRequestEvent sre) {
    9. System.out.println("request对象销毁了");
    10. }
    11. @Override
    12. public void requestInitialized(ServletRequestEvent sre) {
    13. System.out.println("request对象创建了");
    14. }
    15. @Override
    16. public void attributeAdded(ServletRequestAttributeEvent srae) {
    17. System.out.println("request对象添加了数据");
    18. }
    19. @Override
    20. public void attributeRemoved(ServletRequestAttributeEvent srae) {
    21. System.out.println("request对象删除了数据");
    22. }
    23. @Override
    24. public void attributeReplaced(ServletRequestAttributeEvent srae) {
    25. System.out.println("request对象修改了数据");
    26. }
    27. }
    1. <listener>
    2. <listener-class>listener.TestRequestListener</listener-class>
    3. </listener>

    image.png

    <listener>
            <listener-class>listener.TestSessionListener</listener-class>
        </listener>
    
    package listener;
    
    import javax.servlet.http.HttpSessionAttributeListener;
    import javax.servlet.http.HttpSessionBindingEvent;
    import javax.servlet.http.HttpSessionEvent;
    import javax.servlet.http.HttpSessionListener;
    
    public class TestSessionListener implements HttpSessionListener, HttpSessionAttributeListener {
        @Override
        public void sessionCreated(HttpSessionEvent se) {
            System.out.println("session对象创建了");
        }
    
        @Override
        public void sessionDestroyed(HttpSessionEvent se) {
            System.out.println("session对象销毁了");
        }
    
        @Override
        public void attributeAdded(HttpSessionBindingEvent se) {
            System.out.println("session对象添加了值");
        }
    
        @Override
        public void attributeRemoved(HttpSessionBindingEvent se) {
            System.out.println("session对象删除了值");
        }
    
        @Override
        public void attributeReplaced(HttpSessionBindingEvent se) {
            System.out.println("session对象修改了值");
        }
    }
    

    其他和request类似,但让sessiom对象销毁的方法是session.invalidate();
    setMaxInactiveInterval()方法设置了最大活跃时间,不活跃不等于销毁