监听器?

首先,什么是监听器?


监听器主要有以下几种:



现在,我们来一一试过,把所有的事件监听器全部写好,按照输出,我们来分析:

首先是:ServletContextEvent事件:

[html]  view plain  copy
 print ?
  1. package com.xust.jia.listener;  
  2.   
  3. import java.text.SimpleDateFormat;  
  4. import java.util.Date;  
  5.   
  6. import javax.servlet.ServletContextEvent;  
  7. import javax.servlet.ServletContextListener;  
  8.   
  9. public class Listenerapplication implements ServletContextListener{  
  10.   
  11.     @Override  
  12.     public void contextDestroyed(ServletContextEvent arg0) {  
  13.         // TODO Auto-generated method stub  
  14.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  15.         System.out.println();  
  16.         System.out.println();  
  17.         System.out.println(sdf.format(new Date())+"application结束");  
  18.         System.out.println();  
  19.         System.out.println();  
  20.     }  
  21.   
  22.     @Override  
  23.     public void contextInitialized(ServletContextEvent arg0) {  
  24.         // TODO Auto-generated method stub  
  25.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  26.         System.out.println();  
  27.         System.out.println();  
  28.         System.out.println(sdf.format(new Date())+"application开始");  
  29.         System.out.println();  
  30.         System.out.println();  
  31.     }  
  32.   
  33. }  

接下来是

ServletContextAttributeEvent:

[html]  view plain  copy
 print ?
  1. package com.xust.jia.listener;  
  2.   
  3. import java.text.SimpleDateFormat;  
  4. import java.util.Date;  
  5.   
  6. import javax.servlet.ServletContextAttributeEvent;  
  7. import javax.servlet.ServletContextAttributeListener;  
  8.   
  9. public class Listernerapplicationattr implements ServletContextAttributeListener{  
  10.   
  11.     @Override  
  12.     public void attributeAdded(ServletContextAttributeEvent arg0) {  
  13.         // TODO Auto-generated method stub  
  14.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  15.         System.out.println();  
  16.         System.out.println();  
  17.         System.out.println(sdf.format(new Date())+"application的属性被新建"+arg0.getName());  
  18.         System.out.println();  
  19.         System.out.println();  
  20.     }  
  21.   
  22.     @Override  
  23.     public void attributeRemoved(ServletContextAttributeEvent arg0) {  
  24.         // TODO Auto-generated method stub  
  25.         SimpleDateFormat sdFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  26.         System.out.println();  
  27.         System.out.println();  
  28.         System.out.println(sdFormat.format(new Date())+"application的"+arg0.getName()+"属性被删除");  
  29.         System.out.println();  
  30.         System.out.println();  
  31.     }  
  32.   
  33.     @Override  
  34.     public void attributeReplaced(ServletContextAttributeEvent arg0) {  
  35.         // TODO Auto-generated method stub  
  36.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  37.         System.out.println();  
  38.         System.out.println();  
  39.         System.out.println(sdf.format(new Date())+"application的"+arg0.getName()+"属性值被修改为:"+arg0.getValue());  
  40.         System.out.println();  
  41.         System.out.println();  
  42.     }  
  43.   
  44. }  
HttpSessionEvent事件的HttpSessionListener接口:

[html]  view plain  copy
 print ?
  1. package com.xust.jia.listener;  
  2.   
  3. import java.text.SimpleDateFormat;  
  4. import java.util.Date;  
  5.   
  6. import javax.servlet.http.HttpSessionEvent;  
  7. import javax.servlet.http.HttpSessionListener;  
  8.   
  9. public class Listenersession implements HttpSessionListener{  
  10.   
  11.     @Override  
  12.     public void sessionCreated(HttpSessionEvent se) {  
  13.         // TODO Auto-generated method stub  
  14.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  15.         System.out.println();  
  16.         System.out.println();  
  17.         System.out.println(sdf.format(new Date()) + "session对象被创建" + se.getSession());  
  18.         System.out.println();  
  19.         System.out.println();  
  20.     }  
  21.   
  22.     @Override  
  23.     public void sessionDestroyed(HttpSessionEvent se) {  
  24.         // TODO Auto-generated method stub  
  25.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  26.         System.out.println();  
  27.         System.out.println();  
  28.         System.out.println(sdf.format(new Date())+"session对象被销毁" + se.getSource()+se.getClass());  
  29.         System.out.println();  
  30.         System.out.println();  
  31.     }  
  32.   
  33. }  

HttpSessionEvent事件的HttpSessionActivationListener接口:

这个接口并不是直接监听的,而是依附于具体的实体类对象中,即由具体需要的实体类进行实现这个接口,实现这个接口所定义的方法,这样,当在使用到这个实体类的对象时,就会触发这个监听器,从而执行对应的方法:

首先,我们现在实体类中实现这个接口:

[html]  view plain  copy
 print ?
  1. package com.xust.jia.listener;  
  2.   
  3. import java.text.SimpleDateFormat;  
  4. import java.util.Date;  
  5.   
  6. import javax.servlet.http.HttpSessionActivationListener;  
  7. import javax.servlet.http.HttpSessionEvent;  
  8.   
  9. public class Man implements HttpSessionActivationListener{  
  10.   
  11.     @Override  
  12.     public void sessionDidActivate(HttpSessionEvent se) {  
  13.         // TODO Auto-generated method stub  
  14.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  15.         System.out.println();  
  16.         System.out.println();  
  17.         System.out.println(sdf.format(new Date()) +"这是session的didActive方法");  
  18.         System.out.println();  
  19.         System.out.println();  
  20.     }  
  21.   
  22.     @Override  
  23.     public void sessionWillPassivate(HttpSessionEvent se) {  
  24.         // TODO Auto-generated method stub  
  25.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  26.         System.out.println();  
  27.         System.out.println();  
  28.         System.out.println(sdf.format(new Date())+"这是session的Willpassivate方法");  
  29.         System.out.println();  
  30.         System.out.println();  
  31.           
  32.     }  
  33.   
  34.     public Man() {  
  35.         super();  
  36.         // TODO Auto-generated constructor stub  
  37.     }  
  38.   
  39.       
  40. }  


接下来,我们重写一个测试页面:

[html]  view plain  copy
 print ?
  1. <%@page import="java.text.SimpleDateFormat"%>  
  2. <%@page import="com.xust.jia.listener.Man"%>  
  3. <%@page import="java.util.Date" %>  
  4. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  5. <%  
  6. String path = request.getContextPath();  
  7. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
  8. %>  
  9.   
  10. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  11. <html>  
  12.   <head>  
  13.     <base href="<%=basePath%>">  
  14.       
  15.     <title>这是测试session的activationListener接口</title>  
  16.       
  17.     <meta http-equiv="pragma" content="no-cache">  
  18.     <meta http-equiv="cache-control" content="no-cache">  
  19.     <meta http-equiv="expires" content="0">      
  20.     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
  21.     <meta http-equiv="description" content="This is my page">  
  22.     <!-- 
  23.     <link rel="stylesheet" type="text/css" href="styles.css"> 
  24.     -->  
  25.   
  26.   </head>  
  27.     
  28.   <body>  
  29.     <h1>测试session的activationListener接口</h1>  
  30.     <%  
  31.     if(session.getAttribute("act") == null)  
  32.     {  
  33.         Man man = new Man();  
  34.         session.setAttribute("act", man);  
  35.     }  
  36.     System.out.println(session.getId()+session.getAttribute("act"));  
  37.     Date d = new Date(session.getCreationTime());  
  38.     System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(d));  
  39.      %>  
  40.   </body>  
  41. </html>  


然后,在对服务器进行配置:


其中,htmlday1是项目名称,然后,在里面写入:


接下来,我们先打开配置的xml,然后通过xml来访问测试页面进行测试:


说明这个测试页面里的语句被执行,然后关闭服务器,重新打开服务器,发现在E:盘下多了一个文件夹,a:


发现多了一个SESSION文件,打开如下:


在控制台输出以下信息:



注意,关闭服务器是正常关闭,不是直接关闭。

HttpSessionBindingEvent事件的HttpSessionAttributeListener接口:

[html]  view plain  copy
 print ?
  1. package com.xust.jia.listener;  
  2.   
  3. import java.text.SimpleDateFormat;  
  4. import java.util.Date;  
  5.   
  6. import javax.servlet.http.HttpSessionAttributeListener;  
  7. import javax.servlet.http.HttpSessionBindingEvent;  
  8.   
  9. public class Listenersessionattr implements HttpSessionAttributeListener{  
  10.   
  11.     @Override  
  12.     public void attributeAdded(HttpSessionBindingEvent event) {  
  13.         // TODO Auto-generated method stub  
  14.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  15.         System.out.println();  
  16.         System.out.println();  
  17.         System.out.println(sdf.format(new Date())+"session的"+event.getName()+"属性被增加,值为:"+event.getValue());  
  18.         System.out.println();  
  19.         System.out.println();  
  20.     }  
  21.   
  22.     @Override  
  23.     public void attributeRemoved(HttpSessionBindingEvent event) {  
  24.         // TODO Auto-generated method stub  
  25.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  26.         System.out.println();  
  27.         System.out.println();  
  28.         System.out.println(sdf.format(new Date())+"session的"+event.getName()+"属性被删除,值为:"+event.getValue());  
  29.         System.out.println();  
  30.         System.out.println();  
  31.     }  
  32.   
  33.     @Override  
  34.     public void attributeReplaced(HttpSessionBindingEvent event) {  
  35.         // TODO Auto-generated method stub  
  36.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  37.         System.out.println();  
  38.         System.out.println();  
  39.         System.out.println(sdf.format(new Date())+"session的"+event.getName()+"属性值被修改为:"+event.getValue());  
  40.         System.out.println();  
  41.         System.out.println();  
  42.     }  
  43.   
  44. }  

HttpSessionBindingEvent事件的HttpSessionBindingListener接口:

因为这个接口比较特殊,是在实体类中进行实现方法,而且不需要在Web.xml文件中进行配置,所以,我们只是简单的检测验证一下这个接口:

[html]  view plain  copy
 print ?
  1. package com.xust.jia.listener;  
  2.   
  3. import java.text.SimpleDateFormat;  
  4. import java.util.Date;  
  5.   
  6. import javax.servlet.http.HttpSessionBindingEvent;  
  7. import javax.servlet.http.HttpSessionBindingListener;  
  8.   
  9.   
  10. public class Person implements HttpSessionBindingListener{  
  11.   
  12.     @Override  
  13.     public void valueBound(HttpSessionBindingEvent event) {  
  14.         // TODO Auto-generated method stub  
  15.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  16.         System.out.println();  
  17.         System.out.println();  
  18.         System.out.println(sdf.format(new Date())+"这是Binding的Bound"+event.getName()+event.getValue());  
  19.         System.out.println();  
  20.         System.out.println();  
  21.     }  
  22.   
  23.     @Override  
  24.     public void valueUnbound(HttpSessionBindingEvent event) {  
  25.         // TODO Auto-generated method stub  
  26.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  27.         System.out.println();  
  28.         System.out.println();  
  29.         System.out.println(sdf.format(new Date())+"这是Binding的Unbound"+event.getName()+event.getValue());  
  30.         System.out.println();  
  31.         System.out.println();  
  32.     }  
  33.     public Person() {  
  34.         super();  
  35.         // TODO Auto-generated constructor stub  
  36.     }  
  37.   
  38. }  

接下来,我们在servlet类中进行调用这个类,然后把这个类对象加载到会话的属性中,最后使用session的方法,销毁这个session:

在servlet的post或者get方法中写入如下代码:

[html]  view plain  copy
 print ?
  1. Person person = new Person();  
  2. HttpSession hsHttpSession = request.getSession();  
  3. hsHttpSession.setAttribute("person", person);  
  4. hsHttpSession.invalidate();  

接下来,我们调入这个servlet方法中,进行测试:

显示结果如下:




ServletRequestEvent事件:

[html]  view plain  copy
 print ?
  1. package com.xust.jia.listener;  
  2.   
  3. import java.text.SimpleDateFormat;  
  4. import java.util.Date;  
  5.   
  6. import javax.servlet.ServletRequestEvent;  
  7. import javax.servlet.ServletRequestListener;  
  8.   
  9. public class Listenerrequest implements ServletRequestListener{  
  10.   
  11.     @Override  
  12.     public void requestDestroyed(ServletRequestEvent arg0) {  
  13.         // TODO Auto-generated method stub  
  14.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  15.         System.out.println();  
  16.         System.out.println();  
  17.         System.out.println(sdf.format(new Date())+"request被创建");  
  18.         System.out.println();  
  19.         System.out.println();  
  20.     }  
  21.   
  22.     @Override  
  23.     public void requestInitialized(ServletRequestEvent arg0) {  
  24.         // TODO Auto-generated method stub  
  25.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  26.         System.out.println();  
  27.         System.out.println();  
  28.         System.out.println(sdf.format(new Date())+"request被销毁");  
  29.         System.out.println();  
  30.         System.out.println();  
  31.     }  
  32.   
  33. }  

ServletRequestAttributeEvent事件:

[html]  view plain  copy
 print ?
  1. package com.xust.jia.listener;  
  2.   
  3. import java.text.SimpleDateFormat;  
  4. import java.util.Date;  
  5.   
  6. import javax.servlet.ServletRequestAttributeEvent;  
  7. import javax.servlet.ServletRequestAttributeListener;  
  8.   
  9.   
  10. public class Listenerrequestattr implements ServletRequestAttributeListener{  
  11.   
  12.     @Override  
  13.     public void attributeAdded(ServletRequestAttributeEvent arg0) {  
  14.         // TODO Auto-generated method stub  
  15.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  16.         System.out.println();  
  17.         System.out.println();  
  18.         System.out.println(sdf.format(new Date())+"request的"+arg0.getName()+"属性被创建,值为:"+arg0.getValue());  
  19.         System.out.println();  
  20.         System.out.println();  
  21.     }  
  22.   
  23.     @Override  
  24.     public void attributeRemoved(ServletRequestAttributeEvent arg0) {  
  25.         // TODO Auto-generated method stub  
  26.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  27.         System.out.println();  
  28.         System.out.println();  
  29.         System.out.println(sdf.format(new Date())+"request的"+arg0.getName()+"属性被删除,值为:"+arg0.getValue());  
  30.         System.out.println();  
  31.         System.out.println();  
  32.     }  
  33.   
  34.     @Override  
  35.     public void attributeReplaced(ServletRequestAttributeEvent arg0) {  
  36.         // TODO Auto-generated method stub  
  37.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  38.         System.out.println();  
  39.         System.out.println();  
  40.         System.out.println(sdf.format(new Date())+"request的"+arg0.getName()+"属性被修改,值为:"+arg0.getValue());  
  41.         System.out.println();  
  42.         System.out.println();  
  43.     }  
  44.   
  45. }  

接下来,我们写一个测试页面:

[html]  view plain  copy
 print ?
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <%  
  3.     String path = request.getContextPath();  
  4.     String basePath = request.getScheme() + "://"  
  5.             + request.getServerName() + ":" + request.getServerPort()  
  6.             + path + "/";  
  7. %>  
  8.   
  9. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  10. <html>  
  11. <head>  
  12. <base href="<%=basePath%>">  
  13.   
  14. <title>secondjsp page</title>  
  15.   
  16. <meta http-equiv="pragma" content="no-cache">  
  17. <meta http-equiv="cache-control" content="no-cache">  
  18. <meta http-equiv="expires" content="0">  
  19. <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
  20. <meta http-equiv="description" content="This is my page">  
  21.   
  22. <link rel="stylesheet" type="text/css" href="../CSS/index.css">  
  23. <script type="text/javascript" src="./js/jquery.js"></script>  
  24. <script type="text/javascript">  
  25.     $(document).ready(function() {  
  26.         $("#div").hide();  
  27.         $("#button").click(function() {  
  28.             $("#div").show();  
  29.         });  
  30.     });  
  31. </script>  
  32. </head>  
  33.   
  34. <body>  
  35.     <%  
  36.         String nameString = "小李子";  
  37.         String pswdString = "1234567";  
  38.         String sexString = "男";  
  39.         String ageString = "21";  
  40.         /* String nmString = request.getParameter("user");  
  41.         String pdString = request.getParameter("pswd");  
  42.         String sString = request.getParameter("sex");  
  43.         String aString = request.getParameter("age"); */  
  44.         /* nameString = new String(nmString.getBytes("ISO-8859-1"), "UTF-8");  
  45.         pswdString = new String(pdString.getBytes("ISO-8859-1"), "UTF-8");  
  46.         sexString = new String(sString.getBytes("ISO-8859-1"), "UTF-8");  
  47.         ageString = new String(aString.getBytes("ISO-8859-1"), "UTF-8"); */  
  48.         session.setAttribute("name", nameString);  
  49.         session.setAttribute("pswd", pswdString);  
  50.         session.setAttribute("sex", sexString);  
  51.         session.setAttribute("age", ageString);  
  52.         request.setAttribute("name", nameString);  
  53.         request.setAttribute("pswd", pswdString);  
  54.         request.setAttribute("sex", sexString);  
  55.         request.setAttribute("age", ageString);  
  56.         pageContext.setAttribute("name", nameString);  
  57.         pageContext.setAttribute("pswd", pswdString);  
  58.         pageContext.setAttribute("sex", sexString);  
  59.         pageContext.setAttribute("age", ageString);  
  60.         application.setAttribute("name", nameString);  
  61.         application.setAttribute("pswd", pswdString);  
  62.         application.setAttribute("sex", sexString);  
  63.         application.setAttribute("age", ageString);  
  64.         application.setAttribute("name", "123");  
  65.         application.setAttribute("pswd", "456");  
  66.         application.setAttribute("sex", "女");  
  67.         application.setAttribute("age", "25");  
  68.         request.setAttribute("name", "123");  
  69.         request.setAttribute("pswd", "456");  
  70.         request.setAttribute("sex", "女");  
  71.         request.setAttribute("age", "25");  
  72.         session.setAttribute("name", "123");  
  73.         session.setAttribute("pswd", "456");  
  74.         session.setAttribute("sex", "女");  
  75.         session.setAttribute("age", "25");  
  76.         String namepageContextString = (String) pageContext.getAttribute("name");  
  77.         String namesessionString = (String) session.getAttribute("name");  
  78.         String namerequestString = (String) request.getAttribute("name");  
  79.         String nameapplicationString = (String) application.getAttribute("name");  
  80.         String pswdpageContextString = (String) pageContext.getAttribute("pswd");  
  81.         String pswdsessionString = (String) session.getAttribute("pswd");  
  82.         String pswdrequestString = (String) request.getAttribute("pswd");  
  83.         String pswdapplicationString = (String) application.getAttribute("pswd");  
  84.         String sexpageContextString = (String) pageContext.getAttribute("sex");  
  85.         String sexsessionString = (String) session.getAttribute("sex");  
  86.         String sexrequestString = (String) request.getAttribute("sex");  
  87.         String sexapplicationString = (String) application.getAttribute("sex");  
  88.         String agepageContextString = (String) pageContext.getAttribute("age");  
  89.         String agesessionString = (String) session.getAttribute("age");  
  90.         String agerequestString = (String) request.getAttribute("age");  
  91.         String ageapplicationString = (String) application.getAttribute("age");  
  92.     %>  
  93.     <div align="center">  
  94.         <button id="button">点击进行pageContext测试</button>  
  95.         <br> <a href="JSP/four.jsp">点击进行session测试</a><br> <b>进行application测试:重启浏览器,并转到此链接:http://localhost:8080/htmlday1/JSP/four.jsp</b>  
  96.     </div>  
  97.     <div align="center" id="div"  
  98.         style="font-family: 楷体;font-size: 25px;color: green;">  
  99.         客户信息:<br> pageContext:<br> 姓名:<%=namepageContextString%><br>  
  100.         密码:<%=pswdpageContextString%><br> 性别:<%=sexpageContextString%><br>  
  101.         年龄:<%=agepageContextString%><br> session:<br> 姓名:<%=namesessionString%><br>  
  102.         密码:<%=pswdsessionString%><br> 性别:<%=sexsessionString%><br>  
  103.         年龄:<%=agesessionString%><br> request:<br> 姓名:<%=namerequestString%><br>  
  104.         密码:<%=pswdrequestString%><br> 性别:<%=sexrequestString%><br>  
  105.         年龄:<%=agerequestString%><br> application:<br> 姓名:<%=nameapplicationString%><br>  
  106.         密码:<%=pswdapplicationString%><br> 性别:<%=sexapplicationString%><br>  
  107.         年龄:<%=ageapplicationString%><br> <a href="JSP/Login.jsp">回到信息输入界面</a>  
  108.     </div>  
  109.   
  110. </body>  
  111. </html>  

在这个页面中,我们对request,pageContext,session,application的属性进行设置,修改。


其次还有一个页面,可以帮助我们完成测试:

[html]  view plain  copy
 print ?
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <%  
  3. String path = request.getContextPath();  
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
  5. %>  
  6.   
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  8. <html>  
  9.   <head>  
  10.     <base href="<%=basePath%>">  
  11.       
  12.     <title>fourjsp page</title>  
  13.       
  14.     <meta http-equiv="pragma" content="no-cache">  
  15.     <meta http-equiv="cache-control" content="no-cache">  
  16.     <meta http-equiv="expires" content="0">      
  17.     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
  18.     <meta http-equiv="description" content="This is my page">  
  19.     <!-- 
  20.     <link rel="stylesheet" type="text/css" href="styles.css"> 
  21.     -->  
  22.   
  23.   </head>  
  24.     
  25.   <body>  
  26.   <%  
  27.     String namepageContextString = (String)pageContext.getAttribute("name");  
  28.     String namesessionString = (String)session.getAttribute("name");  
  29.     String namerequestString = (String)request.getAttribute("name");  
  30.     String nameapplicationString = (String)application.getAttribute("name");  
  31.     String pswdpageContextString = (String)pageContext.getAttribute("pswd");  
  32.     String pswdsessionString = (String)session.getAttribute("pswd");  
  33.     String pswdrequestString = (String)request.getAttribute("pswd");  
  34.     String pswdapplicationString = (String)application.getAttribute("pswd");  
  35.     String sexpageContextString = (String)pageContext.getAttribute("sex");  
  36.     String sexsessionString = (String)session.getAttribute("sex");  
  37.     String sexrequestString = (String)request.getAttribute("sex");  
  38.     String sexapplicationString = (String)application.getAttribute("sex");  
  39.     String agepageContextString = (String)pageContext.getAttribute("age");  
  40.     String agesessionString = (String)session.getAttribute("age");  
  41.     String agerequestString = (String)request.getAttribute("age");  
  42.     String ageapplicationString = (String)application.getAttribute("age");  
  43.    %>  
  44.     客户信息:<br>  
  45.     pageContext:<br>  
  46.     姓名:<%=namepageContextString %><br>  
  47.     密码:<%=pswdpageContextString %><br>  
  48.     性别:<%=sexpageContextString %><br>  
  49.     年龄:<%=agepageContextString %><br>  
  50.     session:<br>  
  51.     姓名:<%=namesessionString %><br>  
  52.     密码:<%=pswdsessionString %><br>  
  53.     性别:<%=sexsessionString %><br>  
  54.     年龄:<%=agesessionString %><br>  
  55.     request:<br>  
  56.     姓名:<%=namerequestString %><br>  
  57.     密码:<%=pswdrequestString %><br>  
  58.     性别:<%=sexrequestString %><br>  
  59.     年龄:<%=agerequestString %><br>  
  60.     application:<br>  
  61.     姓名:<%=nameapplicationString %><br>  
  62.     密码:<%=pswdapplicationString %><br>  
  63.     性别:<%=sexapplicationString %><br>  
  64.     年龄:<%=ageapplicationString %><br>  
  65.   </body>  
  66. </html>  

接下来:

因为session并不会在关闭浏览器的时候,及时的销毁session对象,所以,我们在web.xml中进行设置自动销毁时间:

[html]  view plain  copy
 print ?
  1. <session-config>  
  2.     <session-timeout>1</session-timeout>  
  3. </session-config>  

然后启动项目,对这些事件进行监听:


当服务器开始启动时,就会创建一个application对象,然后服务器对application对象的属性进行操作:




为什么会有一个request对象被销毁呢?

因为浏览器打开有一个首页,但是我们需要浏览器跳转到指定的页面,所以手动的修改了url地址,只要url的地址发生改变,那么,就会产生一个request请求,那么就会有一个request请求被销毁。


因为我们新打开一个浏览器,所以就产生一个新的会话,就会创建一个新的session对象,当我们打开测试的页面时,因为在测试页面里对session,application等进行属性设置,修改,所以:





因为在jsp内部引入了jQuery文件,所以会发生request对象的销毁与新建:


这里是因为,我们设置了session的自动销毁时间是1分钟,所以当超过一分钟的时候,会自动的销毁session,此时如果刷新页面,则会:




到了这里,我们,对3大对象,6个事件八个接口进行了测试,可以检测到application创建销毁的接口,application属性改变的接口,request创建销毁的接口,request属性改变的接口,session创建销毁的接口,session属性改变的接口,以及session的active和Binding的接口事件。


所以,3大对象6种事件8个接口,到了这里就测试完毕了。

猜你喜欢

转载自blog.csdn.net/qq_35449428/article/details/77948707