servlet监听器

ServletContextAttributeListener接口

实现ServletContextAttributeListener接口的监听器可以监听到ServletContext对象中属性的变化,其提供的方法有:

void attributeAdded(ServletContextAttributeEvent scab)。

void attributeRemoved(ServletContextAttributeEvent scab)。

void attributeReplaced(ServletContextAttributeEvent scab)。

实现ServletContextAttributeListener接口可以监听对ServletContext属性的操作,当增加、删除、修改操作时,都会调用相应的方法。

当在ServletContext增加一个属性时,激发attributeAdded(ServletContextAttributeEvent scab)方法。

当在ServletContext删除一个属性时,激发attributeRemoved(ServletContextAttributeEvent scab)方法。

当在ServletContext属性被重新设置时,激发attributeReplaced(ServletContextAttributeEvent scab)方法。

public class MyServletContextAttributeListener implements

       ServletContextAttributeListener {

 

    public void attributeAdded(ServletContextAttributeEvent arg0) {

       ServletContext context = arg0.getServletContext();

       Object data = arg0.getValue();

       System.out.println(context + "中加入了"+data);

    }

 

    public void attributeRemoved(ServletContextAttributeEvent arg0) {

       ServletContext context = arg0.getServletContext();

       Object data = arg0.getValue();

       System.out.println(context + "中删除了"+data);

    }

 

    public void attributeReplaced(ServletContextAttributeEvent arg0) {

       ServletContext context = arg0.getServletContext();

       Object data = arg0.getValue();

       System.out.println(context + "中更新了"+data);

    }

}

Index.jsp

<%

    application.setAttribute("param","xxx");

    application.setAttribute("param","yyy");

    application.removeAttribute("param");

%>

ServletContextListener接口

实现ServletContextListener接口的监听器可以监听ServletContext对象本身的变化,其提供的方法有:

void contextDestroyed(ServletContextEvent sce)。

void contextInitialized(ServletContextEvent sce)。

实现ServletContextListener接口可以监听ServletContext的操作。

当创建ServletContext时,激发contextInitialized(ServletContextEvent sce)方法。
当销毁ServletContext时,激发contextDestroyed(ServletContextEvent sce)方法。

public class MyServletContextListener implements ServletContextListener {

    public void contextDestroyed(ServletContextEvent arg0) {

       System.out.println(arg0.getServletContext() + "被创建了");

    }

 

    public void contextInitialized(ServletContextEvent arg0) {

       System.out.println(arg0.getServletContext() + "被销毁了");

    }

}

Web.xml

<listener>      <listener-class>cn.class3g.web.listener.MyServletContextListener

</listener-class>

</listener>

ServletRequestListener接口

实现ServletRequestListener接口的监听器可以监听ServletRequest对象本身的变化,其提供的方法有:

void requestDestroyed(ServletRequestEvent sce)。

void requestInitialized(ServletRequestEvent sce)。

实现ServletRequestListener接口可以监听ServletRequest的操作。

当创建ServletRequest时,激发requestInitialized(ServletRequestEvent sce)方法。
当销毁ServletRequest时,激发requestDestroyed(ServletRequestEvent sce)方法。

public class MyServletRequestListener implements ServletRequestListener {

    public void requestDestroyed(ServletRequestEvent arg0) {

       System.out.println("请求对象"+arg0.getSource() + "被销毁了");

    }

 

    public void requestInitialized(ServletRequestEvent arg0) {

       System.out.println("请求对象"+arg0.getSource() + "被创建了");

    }
}
ServletRequestAttributeListener接口

实现ServletRequestAttributeListener接口的监听器可以监听到ServletRequest对象中属性的变化,其提供的方法有:

void attributeAdded(ServletRequestAttributeEvent scab)。

void attributeRemoved(ServletRequestAttributeEvent scab)。

void attributeReplaced(ServletRequestAttributeEvent scab)。

说明:实现ServletRequestAttributeListener接口可以监听对ServletRequest属性的操作,当增加、删除、修改操作时,都会调用相应的方法。

当在ServletRequest增加一个属性时,激发attributeAdded(ServletRequestAttributeEvent scab)方法。

当在ServletRequest删除一个属性时,激发attributeRemoved(ServletRequestAttributeEvent scab)方法。

当在ServletRequest属性被重新设置时,激发attributeReplaced(ServletRequestAttributeEvent scab)方法。

HttpSessionAttributeListener接口

实现HttpSessionAttributeListener接口的监听器可以监听到HttpSession对象中属性的变化,其提供的方法有:

void attributeAdded(HttpSessionBindingEvent se)。

void attributeRemoved(HttpSessionBindingEvent se)。

void attributeReplaced(HttpSessionBindingEvent se)。

实现HttpSessionAttributeListener接口可以监听HttpSession中属性的操作。

当在Session增加一个属性时,激发attributeAdded(HttpSessionBindingEvent se)方法。

当在Session删除一个属性时,激发attributeRemoved(HttpSessionBindingEvent se)方法。

当在Session属性被重新设置时,激发attributeReplaced(HttpSessionBindingEvent se)方法。

public class MyHttpSessionAndRequestAttributeListener implements

       HttpSessionAttributeListener, ServletRequestAttributeListener {

 

    public void attributeAdded(HttpSessionBindingEvent se) {

       System.out.println("session中增加了属性");

    }

    public void attributeRemoved(HttpSessionBindingEvent se) {

       System.out.println("session中删除了属性");

    }

    public void attributeReplaced(HttpSessionBindingEvent se) {

       System.out.println("session中属性被替换了");

    }

    public void attributeAdded(ServletRequestAttributeEvent srae) {

       System.out.println("request中增加了属性");

    }

    public void attributeRemoved(ServletRequestAttributeEvent srae) {

       System.out.println("request中删除了属性");

    }

    public void attributeReplaced(ServletRequestAttributeEvent srae) {

       System.out.println("request中属性被替换了");

    }

}

Index.jsp

<%

    session.setAttribute("param","aaa");

    session.setAttribute("param","bbb");

    session.removeAttribute("param");

   

    request.setAttribute("param","aaa");

    request.setAttribute("param","bbb");

request.removeAttribute("param");

%>



HttpSessionListener接口

实现HttpSessionListener接口的监听器可以监听HttpSession对象本身的创建和销毁,其提供的方法有:

void sessionCreated(HttpSessionEvent se)。

void sessionDestroyed(HttpSessionEvent se)。

实现HttpSessionListener接口的监听器可以监听HttpSession的操作。

当创建一个Session时,激发sessionCreated(SessionEvent se)方法。

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

public class MyHttpSessionListener implements HttpSessionListener {

    public void sessionCreated(HttpSessionEvent arg0) {

       System.out.println(arg0.getSource()+ "被销毁了");

    }

    public void sessionDestroyed(HttpSessionEvent arg0) {

       System.out.println(arg0.getSource()+ "被创建了");

    }
}

HttpSessionActivationListener接口

用于监听HttpSession对象的状态,其提供的方法有:

void sessionDidActivate(HttpSessionEvent se)。

void sessionWillPassivate(HttpSessionEvent se)。


public class Person implements HttpSessionActivationListener, Serializable {

    public void sessionDidActivate(HttpSessionEvent arg0) {
        System.out.println("session从硬盘读入内存了");
    }

    public void sessionWillPassivate(HttpSessionEvent arg0) {
        System.out.println("session被存到硬盘中去了");
    }
}
Index.jsp
<%
session.setAttribute("person",new Person());
%>

/META-INF/context.xml
<Context>
<Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1">
<Store className="org.apache.catalina.session.FileStore" directory="class3g"/>
</Manager>
</Context>

HttpSessionBindingListener接口

实现该接口,可以监听HttpSession对象是被激活还是钝化。

当激活一个HttpSession对象时,激发sessionDidActivate(HttpSessionEvent se)方法。

当钝化一个HttpSession对象时,激发sessionWillPassivate (HttpSessionEvent se)方法
实现了HttpSessionBindingListener接口的 JavaBean 对象可以感知自己被绑定到 Session 中和从 Session 中删除的事件

cn.class3g.domain.User
public class User implements HttpSessionBindingListener{

    private String name;
    
    public void valueBound(HttpSessionBindingEvent event) {
        System.out.println("到session中去");
        
    }
    public void valueUnbound(HttpSessionBindingEvent event) {
        System.out.println("从session中移除");        
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }    
}
Index.jsp
<%
session.setAttribute("user",new User());
session.removeAttribute("param");
%>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值