ServletContext的应用实例



ServletContext的应用。WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用。ServletConfig对象中维护了ServletContext对象的引用,开发人员在编写servlet时,可以通过ServletConfig.getServletContext方法获得ServletContext对象。由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。ServletContext对象通常也被称之为context域对象。

jsp_writer.jsp文件源码:

<%@ page language=”java” import=”java.util.*” pageEncoding=”utf-8″%>
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”>
<html>
<head>
<title>My JSP ‘jsp_writer.jsp’ starting page</title>
</head>
<body>
<%
out.print(“ContextListener”);
application.setAttribute(“name”,”Jack”);
application.setAttribute(“name”,”Micok”);
application.setAttribute(“name”,”");
application.removeAttribute(“name”);

%>
</body>
</html>

 

Context_Listene.java源码:

package com.cn.listener;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintWriter;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextAttributeEvent;
import javax.servlet.ServletContextAttributeListener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;


public class Context_Listene implements ServletContextListener,ServletContextAttributeListener{

private ServletContext servletContext=null;//定义一个ServletContext变量,初始值为null
// 该方法实现了ServletContextListener接口定义的方法,对ServletContext对象进行初始化
public void contextInitialized(ServletContextEvent event) {

//初始化一个ServletContext对象,赋值给成员变量
this.servletContext = event.getServletContext();
print(“初始化成功!”);//打印该方法操作信息
}
// 该方法实现了ServletContextListener接口定义的方法,用来释放ServletContext对象
public void contextDestroyed(ServletContextEvent event) {
this.servletContext=null;//释放ServletContext
print(“释放了ServletContext!”);//打印该方法操作信息
}
// 上下文添加属性时调用此方法,本例中只是把添加的信息打印出来,不做具体处理
public void attributeAdded(ServletContextAttributeEvent attributeEvent) {
print(“添加的ServletContext对象属性(“+attributeEvent.getName()+”,”+attributeEvent.getValue()
+”)”);

}
// 上下文删除某个属性时,调用此方法,本例中只是把删除的信息打印出来,不做具体出来
public void attributeRemoved(ServletContextAttributeEvent arg0) {
// 打印该方法操作信息
print(“删除ServletContext对象属性名”+arg0.getName());
}
// 上下文某个属性更新时,调用此方法,本例中只是把更新的信息打印出来,不做具体出来
public void attributeReplaced(ServletContextAttributeEvent attributeEvent) {
// 打印该方法操作信息
print(“更新的ServletContext对象属性(“+attributeEvent.getName()+”,”+attributeEvent.getValue()
+”)”);
}
private void print(String message){
PrintWriter out = null;
try {
out = new PrintWriter(new FileOutputStream(“D:\\writer.txt”,true));
out.println(new java.util.Date().toLocaleString()
+” ContextListener “+message);
out.close();
} catch (FileNotFoundException e) {
System.out.println(“操作失败!”);
e.printStackTrace();
}
}
}

web.xml配置文件:

<?xml version=”1.0″ encoding=”UTF-8″?>
<web-app version=”2.5″
xmlns=”http://java.sun.com/xml/ns/javaee”
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=”http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd”>
<listener>
<listener-class>com.cn.listener.Context_Listene</listener-class>
</listener>

</web-app>