监听器的配置,绑定

<listener>

<listener-class>监听器的全路径</listener-class>

</listener>

ServletContextListener企业用途

加载框架的配置文件:

Spring框架提供了一个核心监听器ContextLoaderListener。

定时任务调度:

HttpSessionListener监听器的使用

HttpSessionListener监听器(实现接口)  用来监听HttpSession域 对象的创建和销毁

HttpSessionListener监听器作用

用来监听HttpSession对象的创建和销毁。

HttpSession创建和销毁

创建:服务器端第一次调用getSession()方法时候。

销毁:非正常关闭服务器(正常关闭服务器session会被序列化)。

Session过期(默认过期时间30分钟)。

手动调用session.invalidate()方法。

HttpSessionListener监听器的方法

监听HttpSession对象创建

sessionCreated(HttpSessionEvent  se)

监听HttpSession对象销毁

sessionDestroyed(HttpSessionEvent  se)

编写监听器监听HttpSession对象创建和销毁

监听器代码

监听器的配置,绑定

<listener>

<listener-class>监听器的全路径</listener-class>

</listener>

访问HTML是否创建Session :不会

访问JSP是否创建Session :会

访问Servlet是否创建Session :不会(默认没有调用getSession方法)

ServletRequestListener监听器的使用

ServletRequestListener监听器(实现接口) 用来监听ServletRequest域对象的创建和销毁

ServletRequestListener监听器作用

用户监听ServletRequest对象的创建和销毁

ServletRequest对象的创建和销毁

创建:从客户端向服务器发送一次请求,服务器就会创建request对象。

销毁:服务器对这次请求作出了响应之后,request对象就销毁了。

ServletRequestListener监听器的方法

监听ServletRequest对象的创建:requestInitialized(ServletRequestEvent src)

监听ServletRequest对象的销毁::requestDestroyed(ServeltRequestEvent src)

编写监听器代码

监听器代码

监听器配置

<listener>

<listener-class>监听器的全路径</listener-class>

</listener>

访问HTML页面是否创建请求对象 :会

访问JSP页面是否创建请求对象 :会

访问Servlet是否创建请求对象 :会

监听三个域对象的属性变更的监听器

ServletContextAttributeListener:(也是需要实现)监听ServletContext对象中的属性变更(属性添加,移除,替换)的监听器

attributeAdded(canshu);  添加属性监听器

attributeRemoved(canshu);  移除属性监听器

attributeReplaced(canshu):替换属性监听器

HttpSessionAttributeListener:监听HttpSession对象中的属性变更(属性添加,移除,替换)的监听器

attributeAdded(canshu);  添加属性监听器

attributeRemoved(canshu);  移除属性监听器

attributeReplaced(canshu):替换属性监听器

ServletRequestAttributeListener:监听ServletRequest对象中的属性变更(属性添加,移除,替换)的监听器

attributeAdded(canshu);  添加属性监听器

attributeRemoved(canshu);  移除属性监听器

attributeReplaced(canshu):替换属性监听器

演示第二类监听器(三个域的属性监听器 用法都一样)

演示HttpSessionAttributeListener

代码编写

web.xml配置监听器

编写测试的JSP

监听HttpSession中Java类状态改变的监听器

第三类监听器概述

保存在Session域中的Java类可以有多种状态:绑定到session中;从session中解除绑定;随session对象持久化到一个存储设备中(钝化);随session对象从一个存储设备中恢复(活化)。

Servlet对方中定义了两个特殊的监听的接口来帮助Java类了解自己在Session域中的状态:

HttpSessionBindingListener接口  绑定和解绑的接口

HttpSessionActivationListener接口, 钝化和活化的接口

实现这两个接口的类不需要在web.xml中进行配置。

HttpSessionBindingListener监听器:

HttpSessionBindingListener接口:用来监听Java类在HttpSession中的绑定和解除绑定的状态的监听器:(绑定必须是java对象 才是绑定)

valueBound(HttpSessionBindingEvent event);绑定监听器

valueUnBound(HttpSessionBindingEvent event);解除绑定监听器

绑定也是用set ,解除绑定用remove

测试代码:

HttpSessionActivationListener监听器

监听HttpSession中Java类的钝化和活化监听器。

sessionDidActivate(HttpSessionEvent se); 活化监听器

sessionWillPassivate(HttpSessionEvent se); 钝化监听器 需要实现序列化接口

测试代码

配置完成session的序列化和反序列化

Context标签可以配置在:

tomcat/conf/context.xml  :所有tomcat下虚拟主机和虚拟目录下的工程都会序列化session

tomcat/conf/Catalina/localhost/context.xml :localhost虚拟主机下的所有项目会序列化session

工程/META-INF/context.xml :当前工程才会序列化session。

<Context>

<Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1">

<Store className="org.apache.catalina.session.FileStore" directory="javaee"/>

</Manager>

</Context>

Filter的概述

Filter称为过滤器,它是Servlet技术中最实用的技术,web开发人员通过Filter技术,对web服务器所管理的资源(JSP,Servlet,静态图片或静态html文件)进行拦截,从而实现一些特殊的功能。

Filter就是过滤从客户端向服务器发送的请求。

为什么学习过滤器

Filter的入门

Filter的入门

第一步:编写一个类实现Filter接口

第二步:对过滤器进行配置

<filter>

<filter-name>filterName</filter-name>

<filter-class>quanlujing</filter-class>

<filter>

<filter-mapping>

<filter-name>filterName</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

FilterChain对象的概述

FilterChain对象的概述

什么是FilterChain

FilterChain过滤器链:在一个web应用中,可以开发编写多个Filter,这些Filter组合起来称为是一个过滤器链。

Web服务器根据Filter在web.xml文件中的注册顺序(mapping的配置顺序)决定先调用哪个Filter。依次调用后面的过滤器,如果没有下一个过滤器,调用目标资源

FilterChain的演示

Filter的生命周期

Filter的生命周期描述

Filter的创建和销毁是由web服务器负责。Web应用程序启动的时候,web服务器创建Filter的实例对象。并调用其init方法进行初始化(filter对象只会创建一次,init方法也只会执行一次)。

每次filter进行拦截的时候,都会执行doFilter的方法。

当服务器关闭(正常关闭)的时候,应用从服务器中移除的时候,服务器会销毁Filter对象。

FilterConfig对象的概述

FilterConfig对象的概述

FilterConfig对象的作用:

用来获得Filter的相关的配置的对象。

FilterConfig对象的API:的方法 (用filerConfig调用)

getFilterName(); 获得过滤器的名称

getInitParameter(String  name);  获取指定的参数

getInitParameterNames(); 获取所有初始化参数的名称 (返回的是枚举类型的)hasMoreElements()在遍历枚举的时候 判断是否有下一个参数

getServletContext();

FilterConfig的演示

过滤器的相关配置

过滤器的相关配置

<url-pattern>的配置

完全路径匹配 :以/开始   比如/aaa  /aaa/bbb

目录匹配 :以/开始 以*结束  比如/*  /aaa/*  /aaa/bbb/*

扩展名匹配    :不能以/开始 以*开始 比如*.jsp  *.do   *.action

<servlet-name>的配置

专门以Servlet的配置的名称拦截Servlet。

<dispatcher>的配置

默认的情况下过滤器会拦截请求。如果进行转发(需要拦截这次转发)。

dispatcher的取值(在filter-mapping 标签下面设置dispatcher标签)

REQUEST:默认值。默认过滤器拦截的就是请求。

FORWARD:转发。 配置之后 过滤器拦截转发

INCLUDE:页面包含的时候进行拦截 。

ERROR:页面出现全局错误页面跳转的时候进行拦截

如何增强一个类中的方法?

继承

必须要能够控制这个类的构造。

装饰者

被增强的类和增强的类需要实现相同的接口。

在增强的类中获得被增强的类的引用。

缺点:接口中的方法过多,重写很多其他的方法。

动态代理

类需要实现接口。

监听器的配置,绑定HttpSessionListener监听器的使用的更多相关文章

  1. springboot使用HttpSessionListener 监听器统计当前在线人数

    概括: request.getSession(true):若存在会话则返回该会话,否则新建一个会话. request.getSession(false):若存在会话则返回该会话,否则返回NULL ht ...

  2. View绑定式监听器实现原理

    在我们开发android的时候,会经常重写自定义的View去满足一些需求 然后有时候view会提供一些回调,比如view某个部分被点击了,我们需要通知使用者然后再通过接口传一些参数过去. 对于我之前的 ...

  3. 配置spring的监听器 让spring随项目的启动而启动

    <!-- 配置spring的监听器 让spring随项目的启动而启动 --> <listener> <listener-class>org.springframew ...

  4. Oracle 监听器日志配置与管理

    十一假期间,某客户因为监听日志问题导致系统登录挂起,当时在返京的路上,因客户业务不允许中断,无奈之下,借了个本子帮客户做了紧急处理,今天恰好有空,在网上搜了下有关监听日志的内容,发现一个不错的帖子,内 ...

  5. Vue2.0 【第一季】第5节 v-on:绑定事件监听器

    目录 Vue2.0 [第一季] 第5节 v-on:绑定事件监听器 第五节 v-on:绑定事件监听器 一.使用绑定事件监听器,编写一个加分减分的程序. Vue2.0 [第一季] 第5节 v-on:绑定事 ...

  6. ASP.NET Core的配置(3): 将配置绑定为对象[下篇]

    我们在<读取配置信息>通过实例的形式演示了如何利用Options模型以依赖注入的方式直接获取由指定配置节绑定生成的Options对象,我们再次回顾一下当初我们编写的程序.如下面的代码片段所 ...

  7. ASP.NET Core的配置(3): 将配置绑定为对象[上篇]

    出于编程上的便利,我们通常不会直接利用ConfigurationBuilder创建的Configuration对象读取某个单一配置项的值,而是倾向于将一组相关的配置绑定为一个对象,我们将后者称为Opt ...

  8. iis配置绑定二级域名的问题

    最近用destoon给客户做一个网站,涉及到站内企业网站的二级域名解析的问题,iis怎么配置绑定子目录绑定二级域名呢,查了好多资料,没有一个给出具体步骤的 基本是一些概念,不过看了这些东西基本理解了泛 ...

  9. [ASP.NET Core 3框架揭秘] 配置[4]:将配置绑定为对象

    虽然应用程序可以直接利用通过IConfigurationBuilder对象创建的IConfiguration对象来提取配置数据,但是我们更倾向于将其转换成一个POCO对象,以面向对象的方式来使用配置, ...

随机推荐

  1. 第一册:lesson sixty five.

    原文: Not a baby. A:What are you going to do this evening Jill? B:I'm going to meet some friends, dad. ...

  2. Java自动内存管理机制学习(二):垃圾回收器与内存分配策略

    备注:本文引自<深入理解Java虚拟机第二版>仅供参考 图片来自:http://csdn.net/WSYW126 垃圾收集器与内存分配策略 概述 GC要完成3件事: 哪些内存需要回收? 什 ...

  3. Javascript删除数组里的某个元素

    删除array数组中的某个元素,首先需要确定需要删除元素的索引值. ? 1 2 3 4 5 6 7 var arr=[1,5,6,12,453,324]; function indexOf(val){ ...

  4. bootstrap table 获取数据后的前台页面(后台怎么传就不必详细说明了吧)

    <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ t ...

  5. 人工智能改进传统云ERP的10种方法

    http://blog.itpub.net/31542119/viewspace-2168809/ 随着数字化转型的进程加快,企业开始重新评估ERP的作用.传统ERP经过多年僵硬化定制过于追求生产的一 ...

  6. python地理处理包——Shapely介绍及用户手册

    本文主要是基于shapely官方文档翻译而成 shapely主要是在笛卡尔平面对几何对象进行操作和分析. 性能 Shapely中所有的操作都是使用GEOS库.GEOS是用C++写的,也被用在许多应用程 ...

  7. Salesforce 的 package.xml 文件

    package.xml文件 在部署元数据(Metadata)的时候,package.xml是很关键的一个文件.此文件中定义了一个XML格式的列表,其中包含了各个元数据组件的定义. Metadata A ...

  8. linux连接数过多,导致ping包丢包的问题解析

    1.首先要明确,无论是tcp, udp, raw等这些都要占用socket, 那么就涉及到连接数的问题. 所以,linux连接数的问题,不仅仅是tcp连接数. 2.查看当前系统中所有的socket 连 ...

  9. 服务器端使用jstat定位GC问题的有关命令

    jstat命令可以查看堆内存各部分的使用量,以及加载类的数量. 命令的格式如下: jstat    [-命令选项]    [vmid]     [间隔时间/毫秒]      [查询次数]  注意!!! ...

  10. recovery&linux系统升级数据更新分析总结

    先说说对升级的理解吧.系统升级是软件更新及BUG修复的主要方式,升级的主要原理就是数据搬移的过程,把我们需要的数据,从某个地方,更新到另外的一个地方.这个过程就叫做升级.一般是当我们系统有了新的功能增 ...