监听器

监听器监听服务器session的创建

心不动则不痛 提交于 2020-11-18 03:04:33
1、java类实现javax.servlet.http.HttpSessionListener接口 public class MySessionListener implements HttpSessionListener { @Override public void sessionCreated(HttpSessionEvent se) { // 当服务器创建一个session的时候该方法执行 System.out.println("session被创建了..." + se.getSession().getId() + "..." + new Date()); } @Override public void sessionDestroyed(HttpSessionEvent se) { System.out.println("session被销毁了..." + se.getSession().getId() + "..." + new Date()); } } 2、web.xml配置 注意配置顺序:listener --->filter---->servlet 容器创建对象的顺序! <listener> <listener-class>cn.demo.listener.MySessionListener</listener-class> </listener> <session

读取tomcat下的文件夹路径

人走茶凉 提交于 2020-04-04 17:05:37
背景:测试的为了每次部署时清缓存,将temp文件夹也删了,导致系统中有些excel导出功能用不了。 解决:新建一个监听文件,在系统启动时,判断temp文件夹是否存在,不存在就新建。 temp文件夹的作用:参考;http://blog.csdn.net/u013076997/article/details/52301262 /* * Servlet3.0提供@WebListener注解将一个实现了特定监听器接口的类定义为监听器,这样我们在web应用中使用监听器时, * 也不再需要在web.xml文件中配置监听器的相关描述信息了。 */ @WebListener public class MyListener implements ServletContextListener{ @Override public void contextDestroyed(ServletContextEvent arg0) { } @Override public void contextInitialized(ServletContextEvent event) { //取出tomcat部署的位置, System.getProperty("catalina.home"); String catalinaHome = System.getProperty("catalina.home"); if

node.js 学习随笔

好久不见. 提交于 2020-03-30 04:41:41
node.js 非阻塞型I/O及事件环机制 安装 nodejs.org Node.js REPL(交互式解释器) 读取:读取用户输入,解析输入了javascript数据结构并存储在内存中 执行:执行输入的数据结构 打印:输出结果 循环:循环操作以上步骤直到用户两次按下ctrl+c按钮退出。 REPL 命令 ctrl + c - 退出当前终端。 ctrl + c 按下两次 - 退出 Node REPL。 ctrl + d - 退出 Node REPL. 向上/向下 键 - 查看输入的历史命令 tab 键 - 列出当前命令 .help - 列出使用命令 .break - 退出多行表达式 .clear - 退出多行表达式 .save filename - 保存当前的 Node REPL 会话到指定文件 .load filename - 载入当前 Node REPL 会话的文件内容。 回调函数 //阻塞代码实例 var fs = require("fs"); var data = fs.readFileSync('input.txt'); console.log(data.toString()); console.log("程序执行结束"); //非阻塞式代码实例 var fs = require("fs"); fs.readFile('input.txt',function(err

手动实现一个eventEmitter

本小妞迷上赌 提交于 2020-03-30 04:37:57
观察者模式在前端开发中非常常用,我们经常用的事件就是观察者模式的一种体现。它对我们解耦模块、开发基于消息的业务起着非常重要的作用。Node.js 原生自带 EventEmitter 模块,可见它的重要性。 作为在工作中经常遇到和面试的经典题目当然要琢磨透彻,下面一步步手动写一个eventEmitter 首先,我们要知道EE的api是什么样的 node的EventEmitter包含了很多常用的API,我们一一来介绍几个实用的API. 方法名 方法描述 addListener(event, listener) 为指定事件添加一个监听器到监听器数组的尾部。 prependListener(event,listener) 与addListener相对,为指定事件添加一个监听器到监听器数组的头部。 on(event, listener) 其实就是addListener的别名 once(event, listener) 为指定事件注册一个单次监听器,即 监听器最多只会触发一次,触发后立刻解除该监听器。 removeListener(event, listener) 移除指定事件的某个监听器,监听器必须是该事件已经注册过的监听器 off(event, listener) removeListener的别名 removeAllListeners([event]) 移除所有事件的所有监听器,

Node.js API —— Events(事件)

扶醉桌前 提交于 2020-03-30 04:17:53
// 说明 Node API 版本为 v0.10.31。 中文参考: http://nodeapi.ucdok.com/#/api/ , http://blog.sina.com.cn/oleoneoy 本段为博主注解。 目录 ● 事件 ○ Class: events.EventEmitter ■ emitter.addListener(event, listener) ■ emitter.on(event, listener) ■ emitter.once(event, listener) ■ emitter.removeListener(event, listener) ■ emitter.removeAllListener([events]) ■ emitter.setMaxListener(n) ■ emitter.listeners(event) ■ emitter.emit(event, [arg1], [arg2], [...]) ■ Class Method: EventEmitter.listenerCount(emitter, event) ■ Event: 'new listener' ■ Event: 'removeListener' 事件 稳定性:4 - API 冻结 Node 的很多对象都会发射事件: net.Server

深入理解Spring系列之十三:IntrospectorCleanupListener解析

故事扮演 提交于 2020-03-29 21:11:30
Introspector作用及影响 在分析IntrospectorCleanupListener之前,先了解一下Introspector。Introspector是JDK中java.beans包下的类,它为目标JavaBean提供了一种了解原类方法、属性和事件的标准方法。通俗的说,就是可以通过Introspector构建一个BeanInfo对象,而这个BeanInfo对象中包含了目标类中的属性、方法和事件的描述信息,然后可以使用这个BeanInfo对象对目标对象进行相关操作。 下面看一个简单的示例会很容易明白。为了简单,Student类中只有一个name属性。 结果输出:Student{name='张三'} 通过查看Introspector.getBeanInfo方法的源码会发现,Introspector在构建一个BeanInfo对象的时候,会将构建的BeanInfo对象和原类缓存到一个Map中,源码如下。 通过上的代码可以得出,Introspector间接持有了BeanInfo的强引用。如果使用Introspector操作了很多类,那么Introspector将间接持有这些BeanInfo的强引用。在发生垃圾收集的时候,检测到这些BeanInfo存在引用链,则这些类和对应的类加载器将不会被垃圾收集器回收,进而导致内存泄漏。所以,为了解决这个问题

工作流-监听器

送分小仙女□ 提交于 2020-03-26 14:37:10
3 月,跳不动了?>>> 流程监听器(executionListener) 监听Event:start,end,take 任务监听器(taskListener ) 监听Event:create,assignment,complete,delete,all 来源: oschina 链接: https://my.oschina.net/u/2555967/blog/3211833

Servlet 技术全总结 (已完成,不定期增加内容)

假装没事ソ 提交于 2020-03-24 07:33:03
Servlet 技术全总结 (已完成,不定期增加内容) https://www.cnblogs.com/jokerjason/p/5751677.html Servlet是独立于平台和协议的服务器端的java应用程序,处理请求的信息并将其发送到客户端。 Servlet的客户端可以提出请求并动态获得响应。 Servlet动态生成web页面,担当浏览器或其他客户端发出的请求与HTTP服务器上的数据库或应用程序之间的中间层。 对于所有客户端请求,都只需要创建一次Servlet实例,因此,节省了大量内存。 Part 1 Servlet运行原理 web服务器收到一个http请求后,判断请求内容,若是静态页面数据,自行处理,若为动态数据,交给Servlet容器,Servlet容器找到相应Servlet实例处理;处理结果交给web服务器,再转交给客户端。 针对同一个Servlet,Servlet容器会在第一次收到HTTP请求时建立一个Servlet实例,然后启动一个线程,第二次收到http请求后,Servlet容器无需创建相同Servlet ,仅开启第二个线程来处理请求。 ----->多线程的方式有效提高执行效率,降低服务器负担。 Part 2 Servlet 优势 Servlet具有优良的跨平台性; 可移植性良好:java语言编写,Servlet API标准完善

SpringBoot 入门篇(三) SpringApplication

南笙酒味 提交于 2020-03-22 17:28:10
3 月,跳不动了?>>> 一、SpringApplication的几种常用方式 二、定制启动Banner 三、SpringBoot事件和监听器 四、SpringBoot的Web环境信息 五、SpringBoot的ApplicationRunner接口 和 CommandLineRunner接口 SpringBoot版本:1.5.13.RELEASE 对应官方文档链接: https://docs.spring.io/spring-boot/docs/1.5.13.RELEASE/reference/htmlsingle/ 上一篇: SpringBoot 入门篇(二) SpringBoot常用注解以及自动配置 一、SpringApplication的几种常用方式   在之前的两篇SpringBoot 入门介绍中,都使用了在main方法中执行SpringApplication.run()这种方式来启动我们的工程 // 方式一 @SpringBootApplication public class Application { public static void main ( String [ ] args ) { SpringApplication . run ( Application . class , args ) ; } }  

Quartz入门 (四) 监听器Listener

半世苍凉 提交于 2020-03-19 23:14:51
  Quartz的监听器用于当任务调度中你所关注事件发生时,能够及时获取这一事件的通知。类似于任务执行过程中的邮件、短信类的提醒。Quartz 的监听器有 Job监听器,Trigger监听器, Scheduler监听器 ,对不同层面进行监控。三者的使用方法类似,在开始介绍三种监听器之前,需要明确两个概念: 全局监听器 与 非全局监听器 ,二者的区别在于:全局监听器能够接收到所有的Job/Trigger的事件通知,而非全局监听器只能接收到在其上注册的Job或Trigger的事件,不在其上注册的Job或Trigger则不会进行监听。 JobListener   任务调度过程中,与任务Job相关的事件包括:job开始要执行的提示; job执行完成的提示灯。 public interface JobListener {   String getName(); void jobToBeExecuted(JobExecutionContext var1); void jobExecutionVetoed(JobExecutionContext var1); void jobWasExecuted(JobExecutionContext var1, JobExecutionException var2); } demo: 自己写一个监听器实现JobListener接口: public class