java中怎样编定监听器类,Javaweb基础--->监听器listener(转发)

JavaWeb中的监听器

1、基本概念

JavaWeb中的监听器是Servlet规范中定义的一种特殊类,它用于监听web应用程序中的ServletContext, HttpSession和 ServletRequest等域对象的创建与销毁事件,以及监听这些域对象中的属性发生修改的事件。

2、Servlet监听器的分类

在Servlet规范中定义了多种类型的监听器,它们用于监听的事件源分别为ServletContext,HttpSession和ServletRequest这三个域对象

Servlet规范针对这三个对象上的操作,又把多种类型的监听器划分为三种类型:

监听域对象自身的创建和销毁的事件监听器。

监听域对象中的属性的增加和删除的事件监听器。

监听绑定到HttpSession域中的某个对象的状态的事件监听器。

3、监听ServletContext域对象的创建和销毁

ServletContextListener接口用于监听ServletContext对象的创建和销毁事件。实现了ServletContextListener接口的类都可以对ServletContext对象的创建和销毁进行监听。

当ServletContext对象被创建时,激发contextInitialized (ServletContextEvent sce)方法。

当ServletContext对象被销毁时,激发contextDestroyed(ServletContextEvent sce)方法。

ServletContext域对象创建和销毁时机:

创建:服务器启动针对每一个Web应用创建ServletContext

销毁:服务器关闭前先关闭代表每一个web应用的ServletContext

范例:编写一个MyServletContextListener类,实现ServletContextListener接口,监听ServletContext对象的创建和销毁

3-1、编写监听器,代码如下:

packagecom.hanqi.maya.listener;importjavax.servlet.ServletContextEvent;importjavax.servlet.ServletContextListener;/*** @ClassName: MyServletContextListener

* @Description: MyServletContextListener类实现了ServletContextListener接口,

* 因此可以对ServletContext对象的创建和销毁这两个动作进行监听。**/

public class MyServletContextListener implementsServletContextListener {

@Overridepublic voidcontextInitialized(ServletContextEvent sce) {

System.out.println("ServletContext对象创建");

}

@Overridepublic voidcontextDestroyed(ServletContextEvent sce) {

System.out.println("ServletContext对象销毁");

}

}

3-2、在web.xml文件中注册监听器

我们在上面的中讲到,要想监听事件源,那么必须将监听器注册到事件源上才能够实现对事件源的行为动作进行监听,在JavaWeb中,监听的注册是在web.xml文件中进行配置的,如下:

http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

ServletContextListener监听器

com.hanqi.maya.listener.MyServletContextListener

经过这两个步骤,我们就完成了监听器的编写和注册,Web服务器在启动时,就会自动把在web.xml中配置的监听器注册到ServletContext对象上,这样开发好的MyServletContextListener监听器就可以对ServletContext对象进行监听了。

4、监听HttpSession域对象的创建和销毁

HttpSessionListener 接口用于监听HttpSession对象的创建和销毁

创建一个Session时,激发sessionCreated (HttpSessionEvent se) 方法

销毁一个Session时,激发sessionDestroyed (HttpSessionEvent se) 方法。

范例:编写一个MyHttpSessionListener类,实现HttpSessionListener接口,监听HttpSession对象的创建和销毁

4-1、编写监听器,代码如下:

packagecom.hanqi.maya.listener;importjavax.servlet.http.HttpSessionEvent;importjavax.servlet.http.HttpSessionListener;/*** @ClassName: MyHttpSessionListener

* @Description: MyHttpSessionListener类实现了HttpSessionListener接口,

* 因此可以对HttpSession对象的创建和销毁这两个动作进行监听。

**/

public class MyHttpSessionListener implementsHttpSessionListener {

@Overridepublic voidsessionCreated(HttpSessionEvent se) {

System.out.println( se.getSession()+ "创建了!!");

}/*HttpSession的销毁时机需要在web.xml中进行配置,如下:

*

1

这样配置就表示session在1分钟之后就被销毁*/@Overridepublic voidsessionDestroyed(HttpSessionEvent se) {

System.out.println("session销毁了!!");

}

}

4-2、在web.xml文件中注册监听器

HttpSessionListener监听器

com.hanqi.maya.listener.MyHttpSessionListener

1

当我们访问jsp页面时,HttpSession对象就会创建,此时就可以在HttpSessionListener观察到HttpSession对象的创建过程了,我们可以写一个jsp页面观察HttpSession对象创建的过程。

5、监听ServletRequest域对象的创建和销毁

ServletRequestListener接口用于监听ServletRequest 对象的创建和销毁

Request对象被创建时,监听器的requestInitialized(ServletRequestEvent sre)方法将会被调用

Request对象被销毁时,监听器的requestDestroyed(ServletRequestEvent sre)方法将会被调用

ServletRequest域对象创建和销毁时机:

创建:用户每一次访问都会创建request对象

销毁:当前访问结束,request对象就会销毁

范例:编写一个MyServletRequestListener类,实现ServletRequestListener接口,监听ServletRequest对象的创建和销毁

5-1、编写监听器,代码如下:

packagecom.hanqi.maya.listener;importjavax.servlet.ServletRequestEvent;importjavax.servlet.ServletRequestListener;/*** @ClassName: MyServletRequestListener

* @Description: MyServletRequestListener类实现了ServletRequestListener接口,

* 因此可以对ServletRequest对象的创建和销毁这两个动作进行监听。

**/

public class MyServletRequestListener implementsServletRequestListener {

@Overridepublic voidrequestDestroyed(ServletRequestEvent sre) {

System.out.println(sre.getServletRequest()+ "销毁了!!");

}

@Overridepublic voidrequestInitialized(ServletRequestEvent sre) {

System.out.println(sre.getServletRequest()+ "创建了!!");

}

}

5-2、在web.xml文件中注册监听器

ServletRequestListener监听器

com.hanqi.maya.listener.MyServletRequestListener

原博主博客:http://www.cnblogs.com/xdp-gacl/p/3961929.html

原文:http://www.cnblogs.com/sutao/p/7456817.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值