我们可以部署一些特殊的Servlet类,这些Servlet可以监听Web应用的上下文信息、Servlet会话信息和Servlet请求信息。通过这些监听程序,可以在后台自动执行某些程序。另外,我们还可以在Web应用中部署过滤器,通过过滤器,可以对客户端的请求和客户端的响应进行统一处理。
1.Servlet上下文监听。
在Web应用中可以部署监听程序,这个监听程序能够监听ServletContext的信息,比如ServletContext的创建和删除,ServletContext属性的增加、删除、修改等等。
为了实现这个功能,这种监听程序需要实现ServletContextListener和ServletContextAttributeListener接口。下面看个实例,它实现对ServletContext和其属性的监听
package com.test.ch9;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletContext;
import javax.servlet.ServletContext.AttributeEvent;
import javax.Servlet.ServletContext.AttributeListener;
import java.io.*;
public final class MyServletContextListener implements ServletContextListener,ServletContextAttributeListener{
private ServletContext context=null;
//以下代码实现ServletContextListener接口
public void contextDestoryed(ServletContextEvent sce){
logout("contextDestroyed()---->ServletContext被销毁");
this.context=null;
}
public void contextInitialized(ServletContextEcent sce){
this.context=sce.getServletContext();
logout("contextInitialized()--->ServletContext初始化了");
}
//实现ServletContextAttributeListener接口
public void attributeAdded(ServletContextAttributeEvent scae){
logout("增加了一个ServletContext属性:attributeAdded('"+scae.getName()+"','""+scae.getValue()+"')'");
}
public void attributeRemoved(ServletContextAttributeEvent scae){
logout("删除一个ServletContext属性:attributeRemove('"+scae.getName()+"','"+scae.getValue()+"')");
}
public void attributeReplaced(ServletContextAttributeEvent scae){
logout("某个ServletContext的属性被改变:attributeReplaced('"+scae.getName()+"','"+scae.getValue()+"')");
}
private void logout(String message){
PrintWriter out=null;
try{
out=new PrintWriter(new FileOutputStream("C:\\test.txt",true));
out.println(new java.util.Date().toLocaleString()+"::Form ContextListener:"+message);
out.close();
}
catch(Exception e){
out.close();
e.printStackTrace();
}
}
}
MyServletContextListener实现了ServletContextListener、ServletContextAttributeListener接口,所以它能够监听ServletContext创建、销毁及它的属性改变的信息。下面部署这个监听器。如下
<web-app>
<Listener>
<listener-class>com.test.ch9.MyServletContextListener</listener-class>
</Listener>
...............
</web-app>
下面给出一个测试程序。如下
<%
out.println("add attribute");
getServletContext().setAttribute("userName","root");
out.println("replace attribute");
getServletContext().setAttribute("userName","hacking");
out.println("remove attribute");
getServletContext().removeAttribute("userName");
%>
分享到:
相关推荐
2.2.2、创建显示WEB页 2.2.3、创建表单WEB页 2.3、JavaScript简介 2.3.1、JavaScript的基本语法 2.3.2、事件处理 2.3.3、window对象 2.4、本章摘要 2.5、开发实战讲解 第3章 XML简介 3.1、认识XML 3.2、...
2.2.2、创建显示WEB页 2.2.3、创建表单WEB页 2.3、JavaScript简介 2.3.1、JavaScript的基本语法 2.3.2、事件处理 2.3.3、window对象 2.4、本章摘要 2.5、开发实战讲解 第3章 XML简介 3.1、认识XML 3.2、...
2.2.2、创建显示WEB页 2.2.3、创建表单WEB页 2.3、JavaScript简介 2.3.1、JavaScript的基本语法 2.3.2、事件处理 2.3.3、window对象 2.4、本章摘要 2.5、开发实战讲解 第3章 XML简介 3.1、认识XML 3.2、...
2.2.2、创建显示WEB页 2.2.3、创建表单WEB页 2.3、JavaScript简介 2.3.1、JavaScript的基本语法 2.3.2、事件处理 2.3.3、window对象 2.4、本章摘要 2.5、开发实战讲解 第3章 XML简介 3.1、认识XML 3.2、...
cc实例 132 产品宣传屏幕保护程序 4.5 DirectShow程序设计 cc实例133 音频捕捉 cc实例134 视频捕捉 第5章 文件系统 5.1 文件的基本操作 cc实例135 创建和删除文件夹 cc实例136 把文件删除到回收站中...
cc实例135 创建和删除文件夹 cc实例136 把文件删除到回收站中 cc实例137 清空回收站 5.2 查找文件 cc实例138 搜索文件 cc实例139 检查文件是否存在 cc实例140 提取指定文件夹目录...
2.2.2、创建显示WEB页 2.2.3、创建表单WEB页 2.3、JavaScript简介 2.3.1、JavaScript的基本语法 2.3.2、事件处理 2.3.3、window对象 2.4、本章摘要 2.5、开发实战讲解 第3章 XML简介 3.1、认识XML 3.2、...
cc实例135 创建和删除文件夹 cc实例136 把文件删除到回收站中 cc实例137 清空回收站 5.2 查找文件 cc实例138 搜索文件 cc实例139 检查文件是否存在 cc实例140 提取指定文件夹目录...
2.2.2、创建显示WEB页 2.2.3、创建表单WEB页 2.3、JavaScript简介 2.3.1、JavaScript的基本语法 2.3.2、事件处理 2.3.3、window对象 2.4、本章摘要 2.5、开发实战讲解 第3章 XML简介 3.1、认识XML 3.2、...
2.2.2、创建显示WEB页 2.2.3、创建表单WEB页 2.3、JavaScript简介 2.3.1、JavaScript的基本语法 2.3.2、事件处理 2.3.3、window对象 2.4、本章摘要 2.5、开发实战讲解 第3章 XML简介 3.1、认识XML 3.2、...
创建Web客户端 30 编写Web客户端代码 30 编译Web客户端 32 打包Web客户端 32 指定Web客户端的企业Bean引用 32 六.设置企业Bean的JNDI名 32 七.部署J2EE应用程序 33 八.运行J2EE应用程序客户端 34 九.运行Web...
2.2.2、创建显示WEB页 2.2.3、创建表单WEB页 2.3、JavaScript简介 2.3.1、JavaScript的基本语法 2.3.2、事件处理 2.3.3、window对象 2.4、本章摘要 2.5、开发实战讲解 第3章 XML简介 3.1、认识XML 3.2、...