澳门网络娱乐游戏平台-澳门电子游戏娱乐网址-官方直营

监听域对象创造和销毁的Listener

使用Listener类
当java  web应用程序在web容器中运转时,在java web应用程序里面会不停产生种种风云,举个例子web应用的运营,暂停,销毁等。以致web应用中session初阶和竣事
这个web应用对开垦者来讲日常是看不见的。其实在servletapi中。提供了大量的监听器来监听web应用事件,当中Listener类是特别常用的。此类允许当web里面事件时有爆发时回掉事件
监听器的措施。
2.Listener基础。
在java  web应用程序中动用listener时,须求先定义Listener完毕类,然后通过Annoation或在web.xml文件中开展构造Listener
与AWT事件编制程序是完全雷同的。如下是web事件监听器的接口。
1)ServletContextListener监听web应用的运行和停业
2)ServletContextAttributeListener监听ServletContext范围内属性的更动
3)ServletRequestListener监听客户的号召
4)ServletRequestAttributeListener监听ServletRequest范围内(request)内属性的变动
5)HttpSessionListener监听顾客session的始发和终止
6)HttpSessionAttributeListener监听HttpSession范围内session内属性的改造。
Filter过滤器,假设有叁个页面配置了多少个Filter,其试行顺序为,在web.xml中配置的次第,首先实施到位的过滤器是,最后布置的特别过滤器。
实例风度翩翩、创造三个ServletContex的监听器。
ServletContextListener是最常用的Listener,能够在这段日子web应用被加载
时对web应用的连带能源拓宽起先化操作:创造数据库连接池,成立spring的ioc容器,读取当前web应用的发轫化参数
步骤如下:
1.开立叁个类HelloServletContextListener达成ServletContextListener接口
晚上多个接口中所包蕴的七个章程。
2.构造该监听器。
<!-- 配置Listener -->

1.什么是Servlet监听器?

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...

大器晚成,上下文监听(ServletContext对象监听器)

先来探视怎么样是监听器。监听器是特意用来对别的对象身上产生的平地风波或气象改换进行监听和呼应处理的对象,当被监视的目的发生事态时立即采用对应的步履。Servlet监听器是Servlet规范中定义的意气风发种特殊类,它用于监听web应用程序的ServletContext,HttpSession和ServletRequest等域对象的创办与销毁事件,以至监听这几个域对象中的属性发生更正的事件。

1.上下文创设销毁监听:*(在服务器运维时,即Servlet容器(汤姆cat)会履行创立的秘籍,也等于在服务器运转时application对象被创设)

按监听的事件类型Servlet监听器可分为如下三种类型:

(服务器关闭时,Servlet容器(汤姆cat)会实行销毁的点子,application对象被消逝)

  • 监听域对象自己的创导和销毁的事件监听器
  • 监听域对象中的属性的加码和删除的事件监听器
  • 监听绑定到HtppSession域中的某些对象的状态的事件监听器

用场:如:可以在服务器运行时加载想要首先被加载的源委<但假若在这里个时候加载的事物太多,服务器压力比相当大,运维速度会变慢>

2.域对象创造和销毁的风云监听器

 澳门平台登陆网址 1

域对象创设和销毁的平地风波监听器正是用来监听ServletContext,HttpSession,HttpServletRequest那多少个指标的创办和销毁事件的监听器。域对象的创办和销毁时机:

 

  • 澳门钻石唯一旗舰,ServletContext:当web服务器启动时为每一个web应用程序创制相应的ServletContext对象,web服务器关闭时为种种web应用程序销毁相应的ServletContext对象。
  • HttpSession:浏览器带头与服务器会话时创立,调用HttpSession.invalidate(卡塔尔;超越了session的最大使得时间距离;服务器进度被终止。
  • ServletRequest:每一趟诉求最初时成立,每一回访谈截止后销毁。

2.上下文容器监听(当向application中寄存,增加,删除东西时,会独家触发监听器里面包车型大巴多个形式)

3.怎么着编写Servlet监听器?

澳门平台登陆网址 2

  • Servlet规范为每一种事件监听器都定义了相应的接口,编写事件监听程序只需求得以落成那一个接口。
  • 在web.xml中进行登记,web服务器遵照它们在web.xml中的注册顺序来加载和进行那几个Servlet事件监听器。

 配置监听器:(前边多个架构与这几个相仿卡塔尔(英语:State of Qatar)
澳门平台登陆网址 3

4.ServletContextListener接口

 

ServletContextListener接口用于监听ServletContext对象的创导和销毁事件。

二,会话监听(HttpSession对象监听器)

编纂监听器,代码如下:

1.会话创设销毁监听:*(在浏览器运维时会创建会话(session容器被创设))(在浏览器运行时会销毁会话(session容器被灭亡))

package com.javaweb.Listener;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;public class servletContextListenerTest implements ServletContextListener {@Overridepublic void contextInitialized(ServletContextEvent sce) {System.out.println("ServletContext对象被创建");}@Overridepublic void contextDestroyed(ServletContextEvent sce) {System.out.println("ServletContext对象被销毁");}}

澳门平台登陆网址 4

在web.xml中开展配备:

 

<listener>  <description>ServletContextListener</description>  <listener-class>com.javaweb.Listener.servletContextListenerTest</listener-class></listener>

 

ServletContextListener是最常用的Listener,能够在时下web应用被加载时对当下web应用的相关能源开展先河化操作;创造数据库连接池,创设Spring的IOC容器,读取当前web应用的开始化参数。

.2.会话容器监听

监听域对象成立和销毁的Listener还会有HttpSessionListener甚至ServletRequestListener。用法雷同ServletContextListener。

本文由澳门网络娱乐游戏平台发布于编程,转载请注明出处:监听域对象创造和销毁的Listener

相关阅读