Servlet监听器

Servlet中的监听器:提供了8个监听器

一类:监听三个域对象的创建和销毁的监听器.3个
ServletContext                 ServletContextListener
HttpSession         HttpSessionListener
HttpServletRequest                 ServletRequestListener
二类:监听三个域对象的属性变更的监听器.(属性添加,属性移除,属性替换)3个.
ServletContext                 ServletContextAttributeListener
HttpSession         HttpSessionAttributeListener
HttpServletRequest                 ServletRequestAttributeListener
三类:监听HttpSession对象中的JavaBean的状态的改变.(绑定,解除绑定,钝化和活化)2个
HttpSessionBindingListener
HttpSessionActivationListener

setAttribute("name",user);


1.1.1.1  一类监听器:监听三个域对象的创建和销毁的监听器:

  ServletContextListener:监听ServletContext对象的创建和销毁.

【方法】


【问题】

* ServletContext对象何时创建和销毁: 应用在,它就在。

    * 创建:服务器启动时,就为每个应用创建一个单享的ServletContext对象

    * 销毁: 服务器关闭或应用卸载时。

【入门案例】

1.编写一个类实现监听器的接口.

public class MyServletContextListener implements ServletContextListener{

@Override

/**

 * 监听ServletContext对象的创建的方法:

 * @param sce

 */

public void contextInitialized(ServletContextEvent sce) {

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

}

@Override

/**

 * 监听ServletContext对象的销毁的方法:

 * @param sce

 */

public void contextDestroyed(ServletContextEvent sce) {

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

}

}

2.通过配置完成监听器和事件源的绑定.

  <!-- 配置监听器 -->

  <listener>

  <listener-class>com.itheima.weblistener.MyServletContextListener</listener-class>

  </listener>

【企业中应用】

* 初始化工作.

* 加载配置文件:Spring框架.

    * ContextLoaderListener:

HttpSessionListener:监听HttpSession对象的创建和销毁的监听器.

【方法】


【问题】

* HttpSession对象何时创建和销毁的?

    * 创建:当用户第一次访问Servlet,且调用了getSession()时。用户第一次访问jsp时就创建。

    * 销毁:

*默认30分种后销毁

              *服务器非正常关闭。

              *调用invalidate();

              *setMaxInactiveInterval()设置session的有效存活时间

【入门】

1.编写监听器:

public class MyHttpSessionListener implements HttpSessionListener {

@Override

public void sessionCreated(HttpSessionEvent se) {

System.out.println("HttpSession对象被创建了...");

}

@Override

public void sessionDestroyed(HttpSessionEvent se) {

System.out.println("HttpSession对象被销毁了...");

}

}

2.配置监听器:

  <listener>

  <listener-class>com.itheima.weblistener.MyHttpSessionListener</listener-class>

  </listener>

【问题】

1.访问一个Servlet是否创建session对象?:不一定。如果调用了getSession()时。

2.访问一个jsp是否创建session对象?:

ServletRequestListener:监听ServletRequest对象的创建和销毁的监听器:

【方法】


【问题】

ServletRequest对象何时创建和销毁?

    * 创建:用户每次访求都创建。

    * 销毁:当服务器响应数据后,就销毁了。

【入门】

1.编写一个监听器

public class MyServletRequestListener implements ServletRequestListener {

    public void requestInitialized(ServletRequestEvent sre)  {

    System.out.println("ServletRequest被创建了...");

    }

    public void requestDestroyed(ServletRequestEvent sre)  {

    System.out.println("ServletRequest被销毁了...");

    }

}

2.配置监听器

  <listener>

 <listener-class>com.itheima.weblistener.MyServletRequestListener</listener-class>

  </listener>

【问题】

1.访问一个Servlet是否创建request对象?:

2.访问一个jsp是否创建request对象?:

1.1.1.2  二类监听三个域对象属性变更的监听器:

ServletContextAttributeListener:监听ServletContext对象中的属性变更的监听器

【方法】


HttpSessionAttributeListener:监听HttpSession对象中的属性变更的监听器

【方法】


ServletRequestAttributeListener:监听ServletRequest对象中的属性变更的监听器         

【方法】


1.1.1.3  三类:监听HttpSession中的JavaBean的状态改变的监听器.(绑定,解决绑定,钝化,活化)

第三类监听器非常特殊:

* 监听器作用在JavaBean.JavaBean可以自己感知在session中状态.

* 这类监听器不用配置.

HttpSessionBindingListener:监听HttpSession中的JavaBean的绑定和解除绑定的状态.

【方法】


HttpSessionActivationListener:监听HttpSession中的JavaBean的钝化和活化的状态.

【方法】


sessionDidActivate(HttpSessionEvent se);  -- 活化

SessionWillPassivate(HttpSessionEvent se); -- 钝化

1.1.1.4  监听器的总结:

Servlet的监听器分成三类8:

* 一类:监听三个域对象的创建和销毁的监听器.

* 二类:监听三个域对象的属性的变更.

* 三类:监听HttpSessionJavaBean的状态的改变.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值