您的位置:时时app平台注册网站 > 编程知识 > Java Web开发——Servlet监听器

Java Web开发——Servlet监听器

2019-10-11 01:09

2、在开发银行类中登记,修改在此以前运维类的代码为:

首要用途:读取request参数,记录寻访历史

[3]生命周期监听器

图片 1事件列表

 ②HttpSession的成立和销毁:sessionCreated和sessionDestroyed方法

  - HttpSessionEvent
  - 能够取得HttpSession对象

3、运维开掘运行前先打印

  

[1]监听器简介

@SpringBootApplicationpublic class SpringBootDemoApplication { public static void main(String[] args) { SpringApplication springApplication = new SpringApplication(SpringBootDemoApplication.class); springApplication.addListeners(new ApplicationStartedEventListener; springApplication.run; }}

3.2根据监听事件划分

ServletRequestListener(监听壹回呼吁)
(ServletRequestListener监听到三个伸手(一遍服务器与浏览器通讯):
访问jspservlet均算三个伸手(从浏览器发送央浼,服务器响应伏乞,整个经过算二个监听央浼))

图片 2image.png

实例: 

> Listener是JavaWeb中三大组件之一。Servlet、Filter、Listener(均由服务器管理)
> 三大组件皆某个联合签名特征,都须求实现多个接口,并在web.xml文件配置。
监听器:大连众生
监听目标:明星
监听的风浪:干坏事
调用方法:报告急察方

@Componentpublic class ApplicationStartedEventListener implements ApplicationListener<ApplicationStartingEvent> { @Override public void onApplicationEvent(ApplicationStartingEvent applicationStartedEvent) { System.out.println("application starting ....."); }}

图片 3

  void attributeAdded(ServletContextAttributeEvent scab)
  - 当向ServletContext中增加属性时调用

关键步骤:

加载顺序:监听器>过滤器>Servlet

> JavaWeb中的监听器的监听指标是何人?(3个域对象)
  ServletContext
  HttpSession
  ServletRequest

spring boot在起步过程中提供了有的风浪的监听,那样天翻地覆的便利了开拓者进行效用;

2、HttpSession:session,针对每种对话

ServletContextListener(监听整个项目)
  - ServletContext生命周期监听器
  - void contextDestroyed(ServletContextEvent sce)
  - 该办法在ServletContext对象销毁前调用(监听项目将要卸载(服务器关闭))

spring boot支持的事件类型:

  HttpSessionListener

  HttpSessionListener(监听调用getSession()方法)
  - HttpSession生命周期监听器
  - void sessionCreated(HttpSessionEvent se)
  - 该办法在Session创设时调用

@SpringBootApplicationpublic class SpringBootDemoApplication { public static void main(String[] args) { SpringApplication springApplication = new SpringApplication(SpringBootDemoApplication.class); springApplication.addListeners(new ApplicationStartedEventListener; springApplication.addListeners((ApplicationListener<ApplicationPreparedEvent>) event -> { System.out.println("application prepared event"); }); springApplication.addListeners((ApplicationListener<ApplicationReadyEvent>) event -> { System.out.println("application ready event"); }); springApplication.run; }}

【注】

[4]属性监听器
  > 属性监听器,监听三个域中的属性的变动:增加叁性情能,替换贰天性质,移除壹本性质
  > ServletContextAttributeListener
  - 监听ServletContext中的属性的改动

系统运维时,试行各种为:application starting > application prepared > application ready

监听器的启航顺序:根据web.xml的布署顺序来运维

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

1、完毕接口ApplicationListener来创设本人的平地风波监听类;如:

  根据监听目的差别分别实现ServletContextAttributeListener、HttpSessionAttributeListener、ServletRequestAttributeListener接口。

  - void contextInitialized(ServletContextEvent sce)
  - 该措施在ServletContext对象创制之后调用。(监听项目始于运维(服务器运转))

同一的,为了省事,直接用lamda来兑现任何多少个接口

3.1 根据监听的靶子划分

    - void requestDestroyed(ServletRequestEvent sre)
    - 在request对象销毁时调用(服务器刚启航,浏览器突显)

该注明用于将类评释为监听器,被 @WebListener 申明的类必须兑现以下最少多个接口:

  - 属性监听器,监听四个指标中品质的变动。(3个)

  完结接口及方式:HttpSessionBindingListener接口(valueBound和valueUnbound方法)、HttpSessionActivationListener接口(sessionWillPassivate和sessionDidActivate方法)

  - HttpSessionBindingEvent
    1.得以获取到属性名 getName()
    2.能够获得属性的旧值 getValue()
    3.足以获得到HttpSession对象 getSession();

 

    - void requestInitialized(ServletRequestEvent sre)
    - 在request对象创设时调用(服务器刚起步)

  解除绑定:  通过removeAttribue去除

  attributeReplaced(ServletContextAttributeEvent scab)
  - 替换三个属性时调用

@WebListener的常用属性
属性名 类型 是否可选 描述
value String 该监听器的描述信息

    - ServletRequestEvent
    能够获取ServletContext对象和ServletRequest

1、ServletContext:application,整个应用只存在多少个

  > HttpSessionAttributeListener
    void attributeAdded(HttpSessionBindingEvent se)
    void attributeRemoved(HttpSessionBindingEvent se)
    void attributeReplaced(HttpSessionBindingEvent se)

@WebListener("This is a listener")
public class FirstListener impliements ServletRequestListener{}

  - session对象监听器,监听它session中的属性,以至session的活化和钝化。(2个)

动用表明 @WebListener 就能够,无法去定义监听器的逐一

  - ServletContextEvent 对象足以获得到ServletContext对象
  ServletContextEvent.getServletContext();

监听内容:创立、销毁、属性改动事件

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

  5、使用辅助servlet3.0特色的web容器,例如tomcat7

编纂三个监听器的步骤:
  1.开立一个类并落到实处贰个接口。
  2.在web.xml文件中注册监听器。

三、监听器的归类

> 以下三个监听器监听session域中的属性的。
[5]HttpSessionBindingListener
  > 监听session域中某四个类的实例的丰盛和移除。
  > 该接口由JavaBean来落到实处,无需再web.xml文件配置
    valueBound(HttpSessionBindingEvent event)
      - 当该类的实例,作为品质设置进session域中时调用
    valueUnbound(HttpSessionBindingEvent event)
      - 当该类的实例,从session域中被移除时调用

自定义监听器

[2]监听器分类(监听的内容)
  > JavaWeb中的监听器共有三种,共8个监听器
  - 生命周期监听器,监听三个对象的创办和销毁的风浪。(3个)

public class MyFirstListener implements ServletContextListener{
    public void contextInitialized(ServletContextEvent sce){
        //获取web.xml中配置的属性
        String value=sce.getServletContext().getInitParameter("属性名");
        System.out.println(value);
  }
    public void contextDestroyed(ServletContextEvent sce){
        //关闭时操作
  }
}

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

在web.xml中得以安顿项目开首化音讯,在contextInitialized方法中开展运转

[6]HttpSessionActivationListener
  > 监听session域中的某类属性,和session一同活化和钝化的平地风波。
  > 该接口由JavaBean来达成,同样不须求再web.xml中布局,可是该JavaBean供给贯彻Serializable接口!
    void sessionDidActivate(HttpSessionEvent se)
      - 当前目的和session一同被活化到内存时调用

4.1 使用准绳

    void sessionWillPassivate(HttpSessionEvent se)
      - 当前目的和session一齐钝化到硬盘时调用

<listener>
    <listener-class>完整类名</listener-class>
</listener>

  完成方式:attributeAdded、attributeRemoved、attributeReplaced

【注2】

  ServletContextListener

主要用途:总括在间谍数、记录会见日志等

3、用于监听伏乞音讯对象(ServletRequest)的事件监听器,达成ServletRequestListener、ServletRequestAttributeListener接口

3、ServletRequest:request,针对每二个客商乞请

  绑定:    通过setAttribute保存到session对象当中

  2、JDK在1.6以上版本

二、监听器的主干选择

图片 4

1、创制一个落实监听器接口的类

2、监听域对象中的属性的加码和删除的平地风波监听器

实例:

           ②无需在web.xml中登记

  ServletRequestAttributeListener

  活化:    将session对象从存款和储蓄设备上进展还原

创制步骤:

public void requestInitialized(ServletRequestEvent sre)//request创建时调用
public void requestDestroyed(ServletRequestEvent sre)//request销毁时调用
public void sessionCreated(HttpSessionEvent se)//session创建时调用
public void sessionDestroyed(HttpSessionEvent se)//session销毁时调用
<context-param>
    <param-name>属性名</param-name>
    <param-value>属性值</param-value>
</context-param>

2、配置web.xml文件,注册监听器

【注1】①要贯彻钝化和活化必需贯彻Serializable接口

2、用于监听客户会话对象(HttpSeesion)的事件监听器,达成HttpSessionListener、HttpSessionAttributeListener接口

依附监听目的差异分别实现ServletContextListener、HttpSessionListener、ServletRequestListener接口。 

3、监听绑定到HttpSeesion域中的有些对象的事态的风云监听器(创造普通JavaBean)

1、监听域对象自己的始建和销毁的平地风波监听器

一、Servlet监听器的定义

Servlet监听器是Servlet标准中定义的一种极其类,用于监听ServletContext、HttpSession和ServletRequest等域对象的始建与销毁事件,乃至监听这几个域对象中质量产生修改的平地风波。

监听成效:能够在事件发生前、发生后开展局地管理,日常能够用来总结在窥探数和在线客户、总结网址访谈量、系统运维时初步化消息等。

public class MySRequestListener implements SevletRequestListener{
    public void requestInitialized(ServletRequestEvent sre){
        String value=sre.getServletRequest().getParameter("key");//获取request中的参数
        System.out.println(value);
    }
    public void requestDestroyed(ServletRequestEvent sre){  
        System.out.println("request destroyed");
    }
}   

图片 5

四、Servlet3.0下监听器的行使

  HttpSession中的对象意况:绑定→解除绑定;钝化→活化

  3、编写翻译器的编写翻译品级为6.0

图片 6

 web.xml配置session超时参数,单位:分,session超时的光阴而不是准确的

  4、在web.xml文件中,使用3.0规范

  ServletContextAttributeListener

    ②session的钝化学工业机械制由SessionManager管理,创制一个惯常的JavaBean绑定和接触必要贯彻HttpSessionBindingListener接口

public void contextInitialized(ServletContextEvent sce)//ServletContext创建时调用
public void contextDestroyed(ServletContextEvent sce)//ServletContext销毁时调用
<session-config>
    <session-timeout>10</session-timeout>
</session-config>

1、用于监听应用程序情形目的(ServletContext)的轩然大波监听器,达成ServletContextListener、ServletContextAttributeListener接口

  HttpSessionAttributeListener

  session钝化学工业机械制:

 ③ServletRequest的创办和销毁:requestInitialized和requestDestroyed方法

  1、使用servlet3.0新标准的jar包

  ServletRequestListener

4.2 servlet3.0下监听器的用法

监听指标:

首要用途:作为反应计时器、加载全局属性对象、创设全局数据库连接、加载缓存消息等

  钝化:    将session对象持久化到存款和储蓄设备上

    ①把服务器不经常使用的session对象权且体系化到系统文件也许是数据库中,当使用时反连串化到内存中,整个经过由服务器自动达成;

①ServletContext的创导和销毁:contextInitialized方法和contextDestroyed方法

本文由时时app平台注册网站发布于编程知识,转载请注明出处:Java Web开发——Servlet监听器

关键词: