javaweb三大监听器

作者: 计算机网络技术  发布:2019-10-05

java Web三大组件--监听器,javaweb三大监听器

监听器概述


 

监听器(Listener)是一种非常的Servlet技艺,它能够监听Web应用的上下文新闻、Servlet央浼新闻和Servlet会话新闻,即ServletContext、ServletRequest、HttpSession。并依据不一样的图景,在后台调用相应的管理程序。利用监听器对Web应用实行监听和决定,来升高Web应用的事件管理技能。

监听器要用到javax.servlet.jar中的一组监听接口和事件类,依照监听目的的不等,监听器可被剪切为3种:

1)ServletContext事件监听器:用于监听应用程序情形目的。

2)HttpSession事件监听器:用于监听客商会话对象。

3)ServletRequest事件监听器:用于监听央浼音信对象。

那3种监听器共满含了8个监听接口、6个监听事件类。

监听指标

监听接口

监听事件类

ServletRequest

ServletRequestListener

ServletRequestEvent

ServletRequestAttributeListener

ServletRequestAttributeEvent

HttpSession

HttpSessionListener

HttpSessionEvent

HttpSessionActivationListener

HttpSessionAttributeListener

HttpSessionBindingEvent

HttpSessionBindingListener

ServletContext

ServletContextListener

ServletContextEvent

ServletContextAttributeListener

ServletContextAttributeEvent

 

 

 

 

 

 

 

 

 

监听器的运维顺序


1)当有多少个监听器时,按各监听器在web.xml中配置的种种实行前后相继顺序运行。

2)相较于过滤器、Servlet的起步顺序是:

监听器>过滤器>Servlet

 

Listener分类


1)监听ServletContext对象(对应jsp内置对象——application对象)

对ServletCOntext对象完结监听,能够监听到ServletContext对象中质量的变化(增加和删除改操作),也能够就监听到ServletContext对象自己的转换(创制和销毁)。常见监听方法:

接口名称

接口方法

振作振作条件

ServletContextAttributeListener

public void attributeAdded(ServletContextAttributeEvent scab);

追加属性

public void attributeRemoved(ServletContextAttributeEvent scab);

删去属性

public void attributeRepalced(ServletContextAttributeEvent scab);

修改属性

ServletContextListener

public void contextInitialized(ServletContextEvent sce);

创立对象

public void contextDestroyed(ServletContextEvent sce);

销毁对象

 

 

 

 

 

 

2)监听会话(HttpSession对象)(对应jsp内置对象——session对象):

对HttpSession对象完毕监听,能够监听到HttpSession对象中质量的变型(增加和删除改操作),也能够就监听到HttpSession对象自己的成形(创设和销毁),以及该指标的图景,还足以监听HttpSession对象是还是不是绑定到该监视器对象上。常见监听方法:

接口名称

接口方法

激起条件

HttpSessionAttributeListener

public void attributeAdded(HttpSessionBindingEvent se);

充实质量

public void attributeRemoved(HttpSessionBindingEvent se);

除去属性

public void attributeReplaced(HttpSessionBindingEvent se);

修改属性

HttpSessionListener

public void sessionCreated(HttpSessionEvent se);

成立对象

public void sessionDestroyed(HttpSessionEvent se);

销毁对象

HttpSessionActivationListener

public void sessionDidActivate(HttpSessionEvent se);

会话刚被激活

public void sessionWillPssivate(HttpSessionEvent se);

对话将在钝化

HttpSessionBindingListener

public void valueBound(HttpSessionBindingEvent se);

调用setAttribute()

public void valueUnbound(HttpSessionBindingEvent se);

调用removeAttribute()

 

 

 

 

 

 

 

 

 

注意1:

活化(Activate)和钝化(Passivate)是Web容器为了更加好地选取系统能源或然进行服务器负载平衡等原由此对一定指标选取的主意。

对话对象的钝化是指暂且将会话对象通过连串化的艺术囤积到硬盘上;

活化与钝化相反,是把硬盘上囤积的对话对象重新加载到Web容器中。

汤姆cat中的三种钝化管理器:org.apache.catalina.session.StandardManger和org.apache.catalina.session.Persistentmanger

注意2:

session的绝迹有两种景况:

  (1)session超时,web.xml配置:

<session-config>
        <session-timeout>120</session-timeout><!--session120分钟后超时销毁-->
    </session-config>

  (2)手工使session失效

public void invalidate();//使session失效方法。session.invalidate();

 

3)监听乞请(ServletRequest对象)(对应jsp内置对象——request对象)

对ServletRequest对象完成监听,能够监听到ServletRequest对象中质量的转移(增加和删除改操作),也足以就监听到ServletRequest对象自己的生成(创设和销毁)。常见监听方法:

接口名称

接口方法

激发条件

ServletRequestAttributeListener

public void attributeAdded(ServletRequestAttributeEvent srae);

扩充属性

public void attributeRemoved(ServletRequestAttributeEvent srae);

除去属性

public void attributeReplaced(ServletRequestAttributeEvent srae);

修改属性

ServletRequestListener

public void requestInitialized(ServletRequestEvent sre);

成立对象

public void requestDestroyed(ServletRequestEvent sre);

销毁对象

 

 

 

 

 

 

监听器设计步骤(实例)


 

实例:达成在眼线数计算。

当贰个浏览器第一遍访谈网址时,服务器会新建贰个HttpSession对象,并触发HttpSession成立事件,要是注册了HttpSessionListener事件监听器,则会调用HttpSessionListener事件监听器的sessionCreated方法。相反,当那几个浏览器顾客注销或访谈超时的时候,服务器会销毁相应的HttpSession对象,触发HttpSession销毁事件,同期调用所注册的HttpSessionListener事件监听器的sessionDestroyed方法。那样,只需在HttpSessionListener完成类的sessionCreated方法中让计数器加1,在sessionDestroyed方法中让计数器减1,就可以兑现网址在线人数的总计功效。(在参谋博客中还应该有其余艺术总括网址在线人数,在此不再赘述)

创立完成对招待口的监听器类:

package com.listener;

import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class OnlineListener implements HttpSessionListener {

    //定义静态变量存储在线人数
    private static int onlineCount=0;

    @Override
    public void sessionCreated(HttpSessionEvent arg0) {
        onlineCount++;
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent arg0) {
        if(onlineCount>0) onlineCount--;

    }

    //自定义一个返回在线人数的方法
    public static int getOnlineCount(){
        return onlineCount;
    }

}

安排web.xml文件(配置相对简单,只需配置监听器所在的类,无需配置映射地址)

在servlet 3.0本子及越来越高版本中,能够动用申明的方法将促成了有些监听器接口的类证明为监听器,即在类名上标明@WebListener。

<!-- 配置监听器 -->
  <listener>
  <listener-class>com.listener.OnlineListener</listener-class>
  </listener>

成立展现在线人数的jsp页面(注意要导入监听器类所在的包)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="com.listener.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>在线人数显示页面</title>
</head>
<body>
<h2>当前的在线人数:<%=OnlineListener.getOnlineCount() %></h2>
</body>
</html>

然后可用分裂浏览器访谈这一网站,查看运维结果。

 参谋博客:

参考书籍:《Java EE框架开垦本领与案例教程 》

Web三大组件--监听器,javaweb三大监听器 监听器概述 监听器(Listener)是一种特别的Servlet技巧,它能够监听Web应用的上下文新闻、Servl...

Listener
  [1]监听器简单介绍
    > Listener是JavaWeb中三大组件之一。Servlet、Filter、Listener
    > 三大组件都有的联合签名特征,都急需完成三个接口,并在web.xml文件配置。
    监听器:临汾众生
    监听目的:艺人
    监听的轩然大波:干坏事
    调用方法:报告警察方

  JavaWeb中的监听器的监听指标是谁?
    ServletContext
    HttpSession
    ServletRequest

  [2]监听器分类
     JavaWeb中的监听器共有二种,共8个监听器
      1)生命周期监听器,监听多个对象的创办和销毁的风浪。

      2)属性监听器,监听多个对象中品质的变化。

      3)session对象监听器,将它session中的属性,以及session的活化和钝化。

  生命周期监听器
    ServletContextListener
    ServletContext生命周期监听器

    方法
      void contextDestroyed(ServletContextEvent sce)
       该方法在ServletContext对象销毁前调用

       void contextInitialized(ServletContextEvent sce)
       该情势在ServletContext对象创立之后调用。

      ServletContextEvent 对象能够收获到ServletContext对象
      ServletContextEvent.getServletContext();

    HttpSessionListener
    HttpSession生命周期监听器

    方法
      void sessionCreated(HttpSessionEvent se)
      该措施在Session创立时调用

      void sessionDestroyed(HttpSessionEvent se)
      在session销毁时调用

      HttpSessionEvent
      能够拿走HttpSession对象

    ServletRequestListener

    方法
      void requestDestroyed(ServletRequestEvent sre)
       在request对象销毁时调用

      void requestInitialized(ServletRequestEvent sre)
      在request对象成立时调用

      ServletRequestEvent
      能够收获ServletContext对象和ServletRequest

  编写三个监听器的步调:
    1.创办三个类并促成贰个接口。
    2.在web.xml文件中登记监听器。

 

  性子监听器
    属性监听器,监听多少个域中的属性的变通:增加两本品质,替换贰本性能,移除叁本性质
    ServletContextAttributeListener
    监听ServletContext中的属性的扭转

    方法
      void attributeAdded(ServletContextAttributeEvent scab)
      当向ServletContext中增多属性时调用

      attributeRemoved(ServletContextAttributeEvent scab)
      移除属性时调用

      attributeReplaced(ServletContextAttributeEvent scab)
      替换三特本性时调用

 

   HttpSessionAttributeListener

    方法
      void attributeAdded(HttpSessionBindingEvent se)
      void attributeRemoved(HttpSessionBindingEvent se)
      void attributeReplaced(HttpSessionBindingEvent se)

         HttpSessionBindingEvent
        可以猎取到属性名 getName()
        能够获得属性的旧值 getValue()
        可以获取到HttpSession对象 getSession();

 

  ServletRequestAttributeListener
    void attributeAdded(ServletRequestAttributeEvent srae)
    void attributeRemoved(ServletRequestAttributeEvent srae)
    void attributeReplaced(ServletRequestAttributeEvent srae)

 

 以下八个监听器监听session域中的属性的。

  HttpSessionBindingListener
     监听session域中某四个类的实例的足够和移除。
    该接口由JavaBean来贯彻,无需再web.xml文件配置
      valueBound(HttpSessionBindingEvent event)
      当该类的实例,作为品质设置进session域中时调用
      valueUnbound(HttpSessionBindingEvent event)
      当该类的实例,从session域中被移除时调用

 

  HttpSessionActivationListener
    监听session域中的某类属性,和session一同活化和钝化的平地风波。
    该接口由JavaBean来完结,一样不必要再web.xml中安顿,不过该JavaBean须要贯彻Serializable接口!

    void sessionDidActivate(HttpSessionEvent se)
    当前目的和session一同被活化到内部存款和储蓄器时调用

    void sessionWillPassivate(HttpSessionEvent se)
    当前指标和session一同钝化到硬盘时调用

图片 1

本文由今晚买四不像发布于计算机网络技术,转载请注明出处:javaweb三大监听器

关键词:

上一篇:修改网卡名为eth0
下一篇:没有了