监听器Listener(application、session监听器的实现以及session属性的监听器)
原创
©著作权归作者所有:来自51CTO博客作者Denial_learn的原创作品,请联系作者获取转载授权,否则将追究法律责任
Listener的作用:
- Listener是Servlet规范的另一个高级特性,用于监听Java Web程序中的事件,例如创建、销毁session、request、context等,并触发相应的事件,事件发生的时候会自动触发该事件对应的Listener。
- Java Web程序也一样,使用Listener和Event完成相应事件的处理。
监听器Listener的配置:
//application监听器配置
<listener>
<listener-class>com.javaweb.listener.ApplicationListener</listener-class>
</listener>
//session监听器配置
<listener>
<listener-class>com.javaweb.listener.MySessionListener</listener-class>
</listener>
示例:
application监听器:
application监听器的作用 :
- 监听的Web应用的生命周期。
- 用于处理应用程序启动初始化和关闭释放资源的问题
实现
- 实现ServletContextListener接口
public class ApplicationListener implements ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent sct) {
System.out.println("应用关闭-->"+new Date().toLocaleString());
}
@Override
public void contextInitialized(ServletContextEvent sct) {
System.out.println("应用启动-->"+new Date().toLocaleString());
//得到应用路径
String path = sct.getServletContext().getContextPath();
System.out.println("应用是:"+path);
}
}
session监听器:
实现:
- HttpSessionListener接口
public class MySessionListener implements HttpSessionListener {
@Override
public void sessionCreated(HttpSessionEvent hse) {
String dateTime = new Date().toLocaleString();
HttpSession session = hse.getSession();
System.out.println(dateTime+" 创建 sessiom,ID:"+session.getId());
}
@Override
public void sessionDestroyed(HttpSessionEvent hse) {
String dateTime = new Date().toLocaleString();
HttpSession session = hse.getSession();
System.out.println(dateTime+" 销毁session,ID:"+session.getId());
}
session属性监听:HttpSessionAttributeListener接口
public class MySessionAttrListener implements HttpSessionAttributeListener {
@Override
public void attributeAdded(HttpSessionBindingEvent hsb) {
//得到当前session
System.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());
}
}