应用场景示例:
在部署描述文件(web.xml)中设置一个上下文参数和监听者类,监听者根据这个参数构造一个对象,并将这个对象放入上下文属性当中,这样在整个WEB应用的任何地方,都可以使用此类
例:
①--------修改部署描述文件
在web.xml的web-app节点下创建:
在web.xml的web-app节点下创建:
cu.blog.liuxingyuyuni.module.DbServletContextListener
②-------编写属性类
package cu.blog.liuxingyuyuni.module;
public class DbManager { private String dbType;
public String getDbType() { return dbType; }
public void setDbType(String dbType) { this.dbType = dbType; } }
|
③-----编写监听者类
package cu.blog.liuxingyuyuni.module;
import javax.servlet.ServletContext; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener;
public class DbServletContextListener implements ServletContextListener {
public void contextDestroyed(ServletContextEvent sce) {
}
public void contextInitialized(ServletContextEvent event) { ServletContext sc = event.getServletContext(); String dbType = sc.getInitParameter("dbType"); DbManager objDb = new DbManager(); objDb.setDbType(dbType); sc.setAttribute("dbType", objDb); } }
|
④-------编写一个测试类
DbManager dbManager = (DbManager)getServletContext() . getAttribute("dbType"); response.getWriter().println("数据库类型是 : " + dbManager.getDbType() + " ")
|
常见的几个监听者如下:
1. ServletContextAttributeListener [监听上下文当中是否增加,删除或替换了一个属性]
2. HttpSessionListener [监听活动的会话,可以统计有多少个并发用户]
3. ServletRequestListener [监听请求,可以建立日志记录]
4. ServletRequestAttributeListener [监听什么时候增加,删除或替换了一个请求属性]
5. HttpSessionBindingListener [会话绑定监听者]
6. HttpSessionAttributeListener [监听什么时候增加,删除或替换了一个会话属性]
7. ServletContextListener [监听是否创建或撤销了一个上下文属性]
8. HttpSessionActivationListener [监听话话迁移,例如一个会话从一个JVM到另一个JVM时]
其中HttpSessionBindingListener监听者无需在部署描术文件中注册,它会被自动注册
这些监听者编写方式如出一辙基本上相同.
阅读(2010) | 评论(0) | 转发(0) |