servlet监听器.docx

上传人:b****5 文档编号:30224846 上传时间:2023-08-07 格式:DOCX 页数:28 大小:28.21KB
下载 相关 举报
servlet监听器.docx_第1页
第1页 / 共28页
servlet监听器.docx_第2页
第2页 / 共28页
servlet监听器.docx_第3页
第3页 / 共28页
servlet监听器.docx_第4页
第4页 / 共28页
servlet监听器.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

servlet监听器.docx

《servlet监听器.docx》由会员分享,可在线阅读,更多相关《servlet监听器.docx(28页珍藏版)》请在冰豆网上搜索。

servlet监听器.docx

servlet监听器

Servlet监听器:

1,什么是监听器?

  其主要的功能就是监听Web的各种操作,当相关的操作触发后将产生的事件,并对此事件进行处理;

2,对application监听!

  对application监听,实际上就是对ServletContext(Servlet上下文)监听,主要使用ServletContextListener和ServletContextAttributeListener两个接口;

∙ServletContext状态监听:

ServletContextListener接口;

对Servlet上下文状态监听可以使用javax.servlet.ServletContextListener接口,此接口的方法如下:

No

方法

类型

描述

1

publicvoidcontextInitialized(ServletContextEventsce)

普通

容器启动时触发

2

publicvoidcontextDestoryed(ServletContextEventsce)

普通

容器销毁时触发

在ServletContext监听操作中,一旦触发了ServletContextListener接口中定义的事件后,可以通过ServletContextEvent进行事件的处理,此事件定义的方法如下:

No

方法

类型

描述

1

publicServletContextgetServletContext()

普通

取得ServletContext对象

可以通过getServletContext()方法取得一个ServletContext对象的实例,

一个简单的ServletContextListenerDemo:

Java代码

 

1.package com.keith.listener;  

2.  

3.import javax.servlet.ServletContextEvent;  

4.import javax.servlet.ServletContextListener;  

5.  

6.public class ServletContextListenerDemo implements ServletContextListener {  

7.  

8.    /** 

9.     * context销毁时触发 

10.     */  

11.    public void contextDestroyed(ServletContextEvent event) {  

12.        System.out.println("容器销毁时触发--->"+event.getServletContext().getContextPath());  

13.    }  

14.  

15.    /** 

16.     * context加载的时候触发 

17.     */  

18.    public void contextInitialized(ServletContextEvent event) {  

19.        System.out.println("容器初始化---> "  

20.                + event.getServletContext().getContextPath());  

21.    }  

22.  

23.}  

packagecom.keith.listener;

importjavax.servlet.ServletContextEvent;

importjavax.servlet.ServletContextListener;

publicclassServletContextListenerDemoimplementsServletContextListener{

/**

*context销毁时触发

*/

publicvoidcontextDestroyed(ServletContextEventevent){

System.out.println("容器销毁时触发--->"+event.getServletContext().getContextPath());

}

/**

*context加载的时候触发

*/

publicvoidcontextInitialized(ServletContextEventevent){

System.out.println("容器初始化--->"

+event.getServletContext().getContextPath());

}

}

在web.xml里这样配置:

Xml代码

 

1.  

2.      com.keith.listener.ServletContextListenerDemo  

3.   

com.keith.listener.ServletContextListenerDemo

 

在web服务器关闭或者重启的时候会输出:

容器初始化--->/jsp(jsp是我的工程名);信息;

∙ServletContext属性监听:

ServletContextAttributeListener接口

对Servlet上下文属性操作监听,可以使用javax.servlet.ServletContextAttributeListener接口,对此接口定义的方法:

No

方法

类型

描述

1

publicvoidattributeAdded(ServletContextAttributeEventscab)

普通

增加属性时触发

2

publicvoidattributeRemoved(ServletContextAttributeEventscab)

普通

删除属性时触发

3

publicvoidattributeReplaced(ServletContextAttributeEventscab)

普通

替换属性(重复设置)时触发

在上下文属性监听中,一旦触发了SerlvetContextAttributeListener接口中定义的事件后,可以通过ServletContextAttributeEvent进行事件的处理,此事件定义的方法如下:

No

方法

类型

描述

1

publicStringgetName()

普通

取得设置的属性名称

2

publicObjectgetValue()

普通

取得设置的属性内容

 

对ServletContext属性的监听例子:

ServletContextAttributeListenerDemo:

Java代码

 

1.package com.keith.listener;  

2.  

3.import javax.servlet.ServletContextAttributeEvent;  

4.import javax.servlet.ServletContextAttributeListener;  

5.  

6.public class ServletContextAttributeListenerDemo implements  

7.        ServletContextAttributeListener {  

8.  

9.    /** 

10.     * 增加属性时触发 

11.     */  

12.    public void attributeAdded(ServletContextAttributeEvent event) {  

13.        System.out.println("---增加属性时--》属性名称:

"+event.getName()+", 属性内容:

"+event.getValue());  

14.    }  

15.  

16.    /** 

17.     * 移除属性时触发 

18.     */  

19.    public void attributeRemoved(ServletContextAttributeEvent event) {  

20.        System.out.println("---移除属性时--》属性名称:

"+event.getName()+", 属性内容:

"+event.getValue());  

21.    }  

22.  

23.    /** 

24.     * 替换属性时触发 

25.     */  

26.    public void attributeReplaced(ServletContextAttributeEvent event) {  

27.        System.out.println("---替换属性时--》属性名称:

"+event.getName()+", 属性内容:

"+event.getValue());  

28.    }  

29.  

30.}  

packagecom.keith.listener;

importjavax.servlet.ServletContextAttributeEvent;

importjavax.servlet.ServletContextAttributeListener;

publicclassServletContextAttributeListenerDemoimplements

ServletContextAttributeListener{

/**

*增加属性时触发

*/

publicvoidattributeAdded(ServletContextAttributeEventevent){

System.out.println("---增加属性时--》属性名称:

"+event.getName()+",属性内容:

"+event.getValue());

}

/**

*移除属性时触发

*/

publicvoidattributeRemoved(ServletContextAttributeEventevent){

System.out.println("---移除属性时--》属性名称:

"+event.getName()+",属性内容:

"+event.getValue());

}

/**

*替换属性时触发

*/

publicvoidattributeReplaced(ServletContextAttributeEventevent){

System.out.println("---替换属性时--》属性名称:

"+event.getName()+",属性内容:

"+event.getValue());

}

}

 web.xml:

Xml代码

 

1.  

2.      com.keith.listener.ServletContextAttributeListenerDemo  

3.   

com.keith.listener.ServletContextAttributeListenerDemo

 在页面我们可以这样测试,观察控制台:

Java代码

 

1.<%  

2.       this.getServletContext().setAttribute("time:

","2011年");  

3. %>  

4.<%  

5.       this.getServletContext().removeAttribute("time");  

6. %>  

<%

this.getServletContext().setAttribute("time:

","2011年");

%>

<%

this.getServletContext().removeAttribute("time");

 %>

 3,对session监听

  在监听器中,针对于session的监听操作主要使用HttpSessionListener,HttpSessionAttributeListener和HttpSessionBindingListener接口:

∙session状态监听:

HttpSessionListener接口:

当需要对创建或销毁session的操作进行监听时,可以试想javax.servlet.http.HttpSessionListener接口,此接口定义的方法如下:

No

方法

类型

描述

1

publicvoidsessionCreated(HttpSessionEventse)

普通

session创建时调用

2

publicvoidsessionDestoryed(HttpSessionEventse)

普通

session销毁时调用

当session创建或销毁后,将产生HttpSessionEvent事件,此事件定义的方法如下:

No

方法

类型

描述

1

publicHttpSessiongetSession()

普通

取得当前的session

session状态监听:

Java代码

 

1.package com.keith.listener;  

2.  

3.import javax.servlet.http.HttpSessionEvent;  

4.import javax.servlet.http.HttpSessionListener;  

5.  

6.public class HttpSessionListenerDemo implements HttpSessionListener {  

7.  

8.    /** 

9.     * session创建时触发 

10.     */  

11.    public void sessionCreated(HttpSessionEvent event) {  

12.        System.out.println("Session创建,SESSION ID == "+event.getSession().getId());  

13.    }  

14.  

15.    /** 

16.     * session销毁时触发 

17.     */  

18.    public void sessionDestroyed(HttpSessionEvent event) {  

19.        System.out.println("session销毁,SESSION ID == "+event.getSession().getId());  

20.    }  

21.  

22.}  

packagecom.keith.listener;

importjavax.servlet.http.HttpSessionEvent;

importjavax.servlet.http.HttpSessionListener;

publicclassHttpSessionListenerDemoimplementsHttpSessionListener{

/**

*session创建时触发

*/

publicvoidsessionCreated(HttpSessionEventevent){

System.out.println("Session创建,SESSIONID=="+event.getSession().getId());

}

/**

*session销毁时触发

*/

publicvoidsessionDestroyed(HttpSessionEventevent){

System.out.println("session销毁,SESSIONID=="+event.getSession().getId());

}

}

web.xml:

Java代码

 

1.  

2.      com.keith.listener.HttpSessionListenerDemo  

3.  

com.keith.listener.HttpSessionListenerDemo

 当访问一个动态页面的时候,观察后台!

session的销毁操作:

当一个新用户打开一个新的动态页面时,服务器会为新用户分配一个session,并且触发HttpSessionListener接口中的sessionCreated()事件,但是在session有2种销毁方法:

1,调用HttpSession接口中的invalidate()方法,让一个session失效;

2,配置session的时间,在web.xml中这样配置的session的有效时间:

Java代码

 

1.  

2.    5  

3.  

5

session在5分钟后失效;默认的时间是30分钟;

∙session属性监听:

HttpSessionAttributeListener接口;

在session监听中也可以对session的属性进行监听,这一点与监听servletContext属性的道理一样,要对session的属性操作监听,可以使用javax.servlet.http.HttpSessionAttributeListener接口完成;此接口的定义方法如下:

No

方法

类型

描述

1

publicvoidattributeAdded(HttpSessionBindingEventse)

普通

增加属性时触发

2

publicvoidattributeRemoved(HttpSessionBindingEventse)

普通

删除属性时触发

3

publicvoidattributeReplaced(HttpSessionBindingEventse)

普通

替换属性时触发

当进行属性操作时,将根据属性的操作触发HttpSessionAttributeListener接口中的方法,每个操作方法都将产生HttpSessionbindingEvent事件,此事件定义的方法如下:

No

方法

类型

描述

1

publicHttpSessiongetSession()

普通

取得session

2

publicStringgetName()

普通

取得属性名称

3

publicObjectgetValue()

普通

取得属性的内容

对session的属性操作监听:

HttpSessionAttributeListenerDemo:

Java代码

 

1.package com.keith.listener;  

2.  

3.import javax.servlet.http.HttpSessionAttributeListener;  

4.import javax.servlet.http.HttpSessionBindingEvent;  

5.  

6.public class HttpSessionAttributeListenerDemo implements HttpSessionAttributeListener{  

7.      

8.    /** 

9.     * 属性增加时触发 

10.     */  

11.    public void attributeAdded(HttpSessionBindingEvent event) {  

12.        System.out.println(event.getSession().getId()+",增加了属性---》属性名称:

"+event.getName()+",属性内容:

"+event.getValue());  

13.    }  

14.  

15.    /** 

16.     * 属性移除时触发 

17.     */  

18.    public void attributeRemoved(HttpSessionBindingEvent event) {  

19.        System.out.println(event.getSession().getId()+",移除了属性---》属性名称:

"+event.getName()+",属性内容:

"+event.getValue());  

20.    }  

21.  

22.    /** 

23.     * 属性替换时触发 

24.     */  

25.    public void attributeReplaced(HttpSessionBindingEvent event) {  

26.        System.out.println(event.getSession().getId()+",替换了属性---》属性名称:

"+event.getName()+",属性内容:

"+event.getValue());  

27.    }  

28.  

29.}  

packagecom.keith

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1