日期:2014-05-19 浏览次数:20637 次
Servlet程序由Servlet,Filter和Listener组成,其中监听器用来监听Servlet容器上下文。
监听器通常分三类:基于Servlet上下文的ServletContex监听,基于会话的HttpSession监听和基于请求的ServletRequest监听。
?
/** * Application监听器,Servlet中的Application即ServletContext * @author Administrator */ public class ApplicationListener implements ServletContextListener, ServletContextAttributeListener { /** * application销毁时触发的事件 */ @Override public void contextDestroyed(ServletContextEvent arg0) { System.out.println("Application销毁:"+arg0.getServletContext()); } /** * application初始化时触发的方法 */ @Override public void contextInitialized(ServletContextEvent arg0) { System.out.println("Application创建:"+arg0.getServletContext()); } /** * application中添加属性值时触发的方法 */ @Override public void attributeAdded(ServletContextAttributeEvent arg0) { System.out.println("Application添加新属性:key="+arg0.getName()+" value="+arg0.getValue()); } /** * application中删除属性值时触发的方法 */ @Override public void attributeRemoved(ServletContextAttributeEvent arg0) { System.out.println("Application移除属性:key="+arg0.getName()+" value="+arg0.getValue()); } /** * application中替换属性值时触发的方法 */ @Override public void attributeReplaced(ServletContextAttributeEvent arg0) { System.out.println("Application替换属性:key="+arg0.getName()+" value="+arg0.getValue()); } }
?
最后在web.xml需要注册监听器,注册方式非常简单,注意标签<description>和<display-name>不是必须的:
?
<listener> <description>application listener</description> <display-name>application_listener</display-name> <listener-class>com.bless.listener.application.ApplicationListener</listener-class> </listener>
随后启动java web项目,监听器就会运行。
?
?
?
/** * Session监听器 * @author Administrator */ public class SessionListener implements HttpSessionListener, HttpSessionAttributeListener { Vector<HttpSession> listSession = null; /** * 创建Session调用的方法 * 将session对象放入listSession集合中 */ @Override public void sessionCreated(HttpSessionEvent arg0) { synchronized (this) { if(listSession == null){ listSession = new Vector<HttpSession>(); }