编写一个实例,使它能够对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的一段代码如下: