编写一个实例,使它能够对ServletContext以及属性进行监听。由以上介绍可知,该类需要实现ServletContextAttributeL
- MyServletContextListener
.Java - package
com; - import
java.io.FileOutputStream; - import
java.io.PrintWriter; - import
javax.servlet.ServletContext; - import
javax.servlet.ServletContextAttributeE vent; - import
javax.servlet.ServletContextAttributeL istener; - import
javax.servlet.ServletContextEvent; - import
javax.servlet.ServletContextListener; - public
class MyServletContextListener - implements
ServletContextListener,ServletContextAttributeL istener - {
-
private ServletContext context = null; - //定义一个ServletContext对象变量,赋为null
-
public void contextInitialized(ServletContextEvent s) - {
- //TODO
该方法实现了ServletContextListener接口定义的方法,
对ServletContext进行初始化 - this.context
= s.getServletContext(); - //初始化一个ServletContext对象
-
print("ServletContext初始化......"); - //打印出该方法的操作信息
-
} - public
void contextDestroyed(ServletContextEvent s) - {
- //TODO
该方法实现了ServletContextListener接口类定义方法,
用于释放ServletContext对象 -
this.context = null; -
print("ServletContext被释放......"); -
} - public
void attributeAdded(ServletContextAttributeE vent sa) -
{ - //TODO
当上下文添加属性时,将调用该方法。这里只是将添加的属性信息打印出来 -
print("增加ServletContext对象的一个属性:
attributeAdded('"+sa.getName()+"',' "+sa.getValue()+"')"); -
} -
public void attributeRemoved(ServletContextAttributeE vent sa) -
{ - //TODO
当把ServletContext中的某个属性删除时,调用该方法 -
print("删除ServletContext对象的某一个属性:
attributeRemoved('"+sa.getName()+"','")"); -
} -
public void attributeReplaced(ServletContextAttributeE vent sa) - {
- //TODO
当上下文进行属性值更新时,将调用该方法 -
print("更改ServletContext对象的某一个属性:
attributeReplaced('"+sa.getName()+"','"+sa.getValue()+"')"); -
} -
private void print(String message) - {
- //调用该方法在txt文件中打印出message字符串信息
-
PrintWriter out = null; -
Try - {
-
out = new PrintWriter(new FileOutputStream("D:\\output.txt",true)); -
out.println(new java.util.Date().toLocaleString()+"
ContextListener:"+message); -
out.close(); -
} -
catch(Exception e) -
{ -
e.printStackTrace(); -
} - }
- }
程序说明:该监听器类实现了ServletContextAttributeL
contextInitialized(ServletContextEvent s)方法用来初始化ServletContext对象。
contextDestroyed(ServletContextEvent s)方法在上下文中删除某个属性时调用。
attributeAdded(ServletContextAttributeE
attributeReplaced(ServletContextAttributeE
attributeRemoved(ServletContextAttributeE
在使用这个监听器之前还需要在Web模块中的web.xml配置文件中进行声明,代码如下:
-
-
class>servlet.MyServlet
ContextListenerclass> -
接下来将编写JSP程序来操作ServletContext的属性,看看监听器程序作出什么反应,该JSP的一段代码如下: