1、web.xml的配置

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 3     xmlns="http://java.sun.com/xml/ns/javaee" 
 4     xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
 5     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
 6     <display-name>testServletListener</display-name>
 7     <listener>
 8         <listener-class>test_servlet_package.MyRequestListener</listener-class>
 9     </listener>
10     <listener>
11         <listener-class>test_servlet_package.MySessionListener</listener-class>
12     </listener>
13     <listener>
14         <listener-class>test_servlet_package.MyServletContextListener</listener-class>
15     </listener>
16     <!-- 配置欢迎界面 -->
17     <welcome-file-list>
18         <welcome-file>index.jsp</welcome-file>
19     </welcome-file-list>
20 </web-app>

2、RequestListener

 1 package test_servlet_package;
 2 import java.io.FileOutputStream;
 3 import java.io.PrintWriter;
 4 import javax.servlet.ServletRequest;
 5 import javax.servlet.ServletRequestAttributeEvent;
 6 import javax.servlet.ServletRequestAttributeListener;
 7 import javax.servlet.ServletRequestEvent;
 8 import javax.servlet.ServletRequestListener;
 9 /*
10 Servlet事件监听器
11 在Servlet技术中已经定义了一些事件,
12 并且我们可以针对这些事件来编写相关的事件监听器,从而对事件作出相应处理。
13 Servlet事件主要有3类:Servlet上下文事件、会话事件与请求事件
14 下面具体讲解这3类事件的监听器实现。
15 
16 1.对Servlet上下文进行监听
17 可以监听ServletContext对象的创建和删除以及属性的添加、删除和修改等操作。该监听器需要使用到如下两个接口类:
18     ● ServletContextAttributeListener:监听对ServletContext属性的操作,如增加、删除、修改操作。
19     ● ServletContextListener:监听ServletContext,
20         当创建ServletContext时,激发contextInitialized (ServletContextEvent sce)方法。
21         当销毁ServletContext时,激发contextDestroyed(ServletContext- Event sce)方法。
22 
23 2.监听Http会话
24 可以监听Http会话活动情况、Http会话中属性设置情况,也可以监听Http会话的active、paasivate情况等。该监听器需要使用到如下多个接口类:
25   ● HttpSessionListener:监听HttpSession的操作。
26         当创建一个Session时,激发session Created (SessionEvent se)方法;
27         当销毁一个Session时,激发sessionDestroyed (HttpSessionEvent se)方法。
28   ● HttpSessionActivationListener:用于监听Http会话active、passivate情况。
29   ● HttpSessionAttributeListener:监听HttpSession中属性的操作。
30         当在Session增加一个属性时,激发attributeAdded(HttpSessionBindingEvent se) 方法;
31         当在Session删除一个属性时,激发attributeRemoved(HttpSessionBindingEvent se)方法;
32         当在Session属性被重新设置时,激发attributeReplaced(HttpSessionBindingEvent se) 方法。
33       
34 3.对客户端请求进行监听
35 对客户端的请求进行监听是在Servlet 2.4规范中新添加的一项技术,使用的接口类如下:
36     ● ServletRequestListener接口类。
37     ● ServletRequestAttrubuteListener接口类
38   
39 */
40 public class MyRequestListener implements ServletRequestListener,ServletRequestAttributeListener{
41     public void requestDestroyed(ServletRequestEvent arg0) {
42         //对销毁客户端请求进行监听
43         print("reqeust destroyed");
44     }
45     public void requestInitialized(ServletRequestEvent arg0) {
46         //对实现客户端请求进行监听
47         print("Request init");
48         ServletRequest sr = arg0.getServletRequest(); //初始化客户端请求
49         print(sr.getRemoteAddr()); //获得请求客户端的地址
50     }
51     public void attributeAdded(ServletRequestAttributeEvent arg0) {
52         //对属性的添加进行监听
53         print("attributeAdded('"+arg0.getName()+"','"+arg0.getValue()+"')");
54     }
55     public void attributeRemoved(ServletRequestAttributeEvent arg0) {
56         //对属性的删除进行监听
57         print("attributeRemoved('"+arg0.getName()+"','"+arg0.getValue()+"')");
58     }
59     public void attributeReplaced(ServletRequestAttributeEvent arg0) {
60         //对属性的更新进行监听
61         print("attributeReplaced('"+arg0.getName()+"','"+arg0.getValue()+"')");
62     }
63     private void print(String message){
64         //调用该方法在txt文件中打印出message字符串信息
65         PrintWriter out = null;
66         try{
67              out = new PrintWriter(new FileOutputStream("d:\\output.txt",true));
68              out.println(new java.util.Date()+" RequestListener: "+message);
69              out.close();
70         }catch(Exception e){
71             e.printStackTrace();
72         }
73     }
74 /*
75 对客户端请求进行监听的技术是在Servlet 2.4版本之后才出现的。一旦监听程序能够获得客户端请求,
76 就可以对所有客户端请求进行统一处理。例如,一个Web程序如果在本机访问,就可以不登录,如果是远程访问,
77 即需要登录。这是通过监听客户端请求,从请求中获取到客户端地址,并通过地址来作出相应的处理。
78 程序说明:该监听器类实现了ServletRequestListener和ServletRequestAttributeListener两接口类,
79 ServletRequestListener接口类中定义的两个方法对客户端请求的创建和销毁进行监听;
80 ServletRequestAttributeListener接口类对请求中的属性添加、修改和删除进行监听。
81 *
82 */
83 }
View Code

相关文章:

  • 2021-09-23
  • 2021-09-26
  • 2021-07-02
  • 2022-12-23
  • 2022-12-23
  • 2022-01-08
  • 2021-10-17
  • 2023-03-23
猜你喜欢
  • 2021-11-21
  • 2021-11-30
  • 2022-12-23
  • 2021-07-03
  • 2021-08-25
  • 2021-07-09
  • 2022-12-23
相关资源
相似解决方案