监听器Listener
- Listener的作用
- Listener是Servlet规范的另一个高级特性,用于监听Java Web程序中的事件,例如创建、销毁session、request、context等,并触发相应的事件,事件发生的时候会自动触发该事件对应的Listener。
- Java Web程序也一样,使用Listener和Event完成相应事件的处理。
application监听器
- application监听器的作用
- 监听的Web应用的生命周期。
- 用于处理应用程序启动初始化和关闭释放资源的问题
- 实现方式
- 实现ServletContextListener接口
web.xml配置:
//application监听器配置
<listener>
<listener-class>com.javaweb.listener.ApplicationListener</listener-class>
</listener>
接口实现类:
public class ApplicationListener implements ServletContextListener {@Overridepublic void contextDestroyed(ServletContextEvent sct) {System.out.println("应用关闭-->"+new Date().toLocaleString());}@Overridepublic void contextInitialized(ServletContextEvent sct) {System.out.println("应用启动-->"+new Date().toLocaleString());//得到应用路径String path = sct.getServletContext().getContextPath();System.out.println("应用是:"+path);}
}
session监听器
- session状态监听:HttpSessionListener接口
方法 | 描述 |
public void sessionCreated(HttpSessionEvent hse) | session创建时调用 |
public void sessionDestroyed(HttpSessionEvent hse) | session销毁时调用 |
web.xml配置:
//session监听器配置
<listener>
<listener-class>com.javaweb.listener.MySessionListener</listener-class>
</listener>
接口实现类:
public class MySessionListener implements HttpSessionListener {@Overridepublic void sessionCreated(HttpSessionEvent hse) {String dateTime = new Date().toLocaleString();HttpSession session = hse.getSession();System.out.println(dateTime+" 创建 sessiom,ID:"+session.getId());}@Overridepublic void sessionDestroyed(HttpSessionEvent hse) {String dateTime = new Date().toLocaleString();HttpSession session = hse.getSession();System.out.println(dateTime+" 销毁session,ID:"+session.getId());}
session属性监听
- session属性监听:HttpSessionAttributeListener接口
方法 | 描述 |
public void attributeAdded(HttpSessionBindingEvent hsb) | 增加属性时调用 |
public void attributeRemoved(HttpSessionBindingEvent hsb) | 删除属性时调用 |
public void attributeReplaced(HttpSessionBindingEvent hsb) | 替换属性时调用 |
接口实现类:
public class MySessionAttrListener implements HttpSessionAttributeListener {@Overridepublic void attributeAdded(HttpSessionBindingEvent hsb) {//得到当前sessionSystem.out.print("session ID:"+hsb.getSession().getId());//获取属性名和属性值System.out.println(" 增加属性:"+hsb.getName()+",属性值是:"+hsb.getValue());
}
public void attributeRemoved(HttpSessionBindingEvent hsb) {System.out.print("session ID:"+hsb.getSession().getId());System.out.println(" 删除属性:"+hsb.getName()+",属性值是:"+hsb.getValue());}
public void attributeReplaced(HttpSessionBindingEvent hsb) {System.out.print("session ID:"+hsb.getSession().getId());System.out.println(" 替换属性:"+hsb.getName()+",属性值是:"+hsb.getValue());}
}
总结
- Listener是Servlet规范的另一个高级特性,用于监听Java Web程序中的事件。
application监听器
session监听器