日期:2014-05-19 浏览次数:20864 次
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>();
}