监听器的配置,绑定HttpSessionListener监听器的使用
监听器的配置,绑定
<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监听器的使用的更多相关文章
- springboot使用HttpSessionListener 监听器统计当前在线人数
概括: request.getSession(true):若存在会话则返回该会话,否则新建一个会话. request.getSession(false):若存在会话则返回该会话,否则返回NULL ht ...
- View绑定式监听器实现原理
在我们开发android的时候,会经常重写自定义的View去满足一些需求 然后有时候view会提供一些回调,比如view某个部分被点击了,我们需要通知使用者然后再通过接口传一些参数过去. 对于我之前的 ...
- 配置spring的监听器 让spring随项目的启动而启动
<!-- 配置spring的监听器 让spring随项目的启动而启动 --> <listener> <listener-class>org.springframew ...
- Oracle 监听器日志配置与管理
十一假期间,某客户因为监听日志问题导致系统登录挂起,当时在返京的路上,因客户业务不允许中断,无奈之下,借了个本子帮客户做了紧急处理,今天恰好有空,在网上搜了下有关监听日志的内容,发现一个不错的帖子,内 ...
- Vue2.0 【第一季】第5节 v-on:绑定事件监听器
目录 Vue2.0 [第一季] 第5节 v-on:绑定事件监听器 第五节 v-on:绑定事件监听器 一.使用绑定事件监听器,编写一个加分减分的程序. Vue2.0 [第一季] 第5节 v-on:绑定事 ...
- ASP.NET Core的配置(3): 将配置绑定为对象[下篇]
我们在<读取配置信息>通过实例的形式演示了如何利用Options模型以依赖注入的方式直接获取由指定配置节绑定生成的Options对象,我们再次回顾一下当初我们编写的程序.如下面的代码片段所 ...
- ASP.NET Core的配置(3): 将配置绑定为对象[上篇]
出于编程上的便利,我们通常不会直接利用ConfigurationBuilder创建的Configuration对象读取某个单一配置项的值,而是倾向于将一组相关的配置绑定为一个对象,我们将后者称为Opt ...
- iis配置绑定二级域名的问题
最近用destoon给客户做一个网站,涉及到站内企业网站的二级域名解析的问题,iis怎么配置绑定子目录绑定二级域名呢,查了好多资料,没有一个给出具体步骤的 基本是一些概念,不过看了这些东西基本理解了泛 ...
- [ASP.NET Core 3框架揭秘] 配置[4]:将配置绑定为对象
虽然应用程序可以直接利用通过IConfigurationBuilder对象创建的IConfiguration对象来提取配置数据,但是我们更倾向于将其转换成一个POCO对象,以面向对象的方式来使用配置, ...
随机推荐
- [转]OmniLayer / omnicore API 中文版
本文转自:https://www.codetd.com/article/1692438 JSON-RPC API Omni Core是Bitcoin Core的一个分支,其Omni协议功能支持作为顶层 ...
- C# XML入门
什么是XML? XML:可扩展标记语言. XML的作用: 纯文本,兼容性强. 和HTML的区别: xml: 主要用来处理.存储数据.无规定标签,可扩展. html:对数据的显示和描述. 语法标签固定. ...
- 数据库 'xxxx' 的事务日志已满。若要查明无法重用日志中的空间的原因
一.出现的背景: 在SQL server中执行SQL语句出现如下图: 二.出现的原因: 我到数据库的服务器看了一下硬盘空间发现此数据库所在的D盘空间几乎已经用尽.如图: 三.解决方法: 第一种方法:直 ...
- 18.QT-QPlainEdit 信号与槽
QPlainEdit编辑功能 Public Slots void appendHtml ( const QString & html ) void appendPlainText ( cons ...
- 【开源程序(C++)】获取bing图片并自动设置为电脑桌面背景
众所周知,bing搜索网站首页每日会更新一张图片,张张漂亮(额,也有一些不合我口味的),特别适合用来做电脑壁纸. 我们想要将bing网站背景图片设置为电脑桌面背景的通常做法是: 上网,搜索bing 找 ...
- 基于redis的分布式锁(不适合用于生产环境)
基于redis的分布式锁 1 介绍 这篇博文讲介绍如何一步步构建一个基于Redis的分布式锁.会从最原始的版本开始,然后根据问题进行调整,最后完成一个较为合理的分布式锁. 本篇文章会将分布式锁的实现分 ...
- angularJs学习笔记-入门
1.angularJs简介 angularJs是一个MV*的javascript框架(Model-View-Whatever,不管是MVVM还是MVC,统归MDV(model drive view)) ...
- BZOJ4407: 于神之怒加强版(莫比乌斯反演 线性筛)
Description 给下N,M,K.求 感觉好迷茫啊,很多变换看的一脸懵逼却又不知道去哪里学.一道题做一上午也是没谁了,, 首先按照套路反演化到最后应该是这个式子 $$ans = \sum_{d ...
- 2018-05-14 代码考古-Python3官方教程字典例程
知乎原链 Data Structures中的第一个例程: >>> tel = {'jack': 4098, 'sape': 4139} >>> tel['guido ...
- 在PeopleSoft中,什么是AlterAudit,Sysaudit和DDDAudit报告
Alter Audit-是一个进程,它标识任何需要SQL Alter process的记录.即:如果AD中定义的record与数据库的中定义不匹配则标识该记录为应该修改. SQL Alter-AD中的 ...