[09] 监听器 Listener
1、事件
1.1 事件的概念

1.2 事件类型
- ServletContextEvent
- 该类表示上下文事件,当应用上下文对象发生改变,如创建或销毁上下文对象时,将触发上下文事件
- ServletContextAttributeEvent
- 该类表示上下文属性事件,当应用上下文的属性发生变化,如增加、删除、覆盖上下文中的属性时,将触发该事件
- ServletRequestEvent
- 该类表示请求事件,当请求对象发生改变,如创建或销毁请求对象时,触发请求事件
- ServletRequestAttributeEvent
- 该类表示请求属性事件,当请求中的属性发生改变,如增加、删除、覆盖请求中的属性时,触发请求属性事件
- HttpSessionEvent
- 该类表示会话事件,当会话对象发生改变,如创建或销毁会话对象,活化或钝化会话对象时,将触发会话事件
- HttpSessionBindingEvent
- 该类表示会话绑定事件,当会话中的属性发生变化时,如增加、删除、覆盖会话中的属性时,将触发会话绑定事件
2、监听器
- ServletContextListener
- 上下文监听器,监听ServletContextEvent事件
- ServletContextAttributeListener
- 上下文属性监听器,用来监听ServletContextAttribute事件
- ServletRequestListener
- 请求监听器,监听ServletRequestEvent事件
- ServletRequestAttributeListener
- 请求属性监听器,用来监听ServletRequestAttributeEvent事件
- HttpSessionListener
- 会话监听器,监听HttpSessionEvent事件
- HttpSessionActivationListener
- 会话活化监听器,监听HttpSessionEvent事件
- HttpSessionAttributeListener
- 会话属性监听器,监听HttpSessionAttributeEvent事件
- HttpSessionBindingListener
- 会话绑定监听器,监听HttpSessionAttributeEvent事件
3、事件和监听的关系
4、示例:用监听器修改登录计数器
- 当容器关闭时,把当前数值保存到文本文件中
- 当容器启动时,从文本文件中读取数值。
4.1 写一个监听器
public class VisitCountsListener implements ServletContextListener {
/**
* 容器启动时
* @param sce
*/
public void contextInitialized(ServletContextEvent sce) {
ServletContext context = sce.getServletContext();
String path = context.getRealPath("/WEB-INF/temp/visit.txt");
File file = new File(path);
int count = 0;
try {
if (file.exists()) {
BufferedReader reader = new BufferedReader(new FileReader(path));
count = Integer.valueOf(reader.readLine());
}
} catch (IOException e) {
e.printStackTrace();
}
context.setAttribute("count", count);
}
/**
* 容器关闭时
* @param sce
*/
public void contextDestroyed(ServletContextEvent sce) {
ServletContext context = sce.getServletContext();
String path = context.getRealPath("/WEB-INF/temp/visit.txt");
File file = new File(path);
try {
if (file.exists()) {
file.delete();
}
file.createNewFile();
BufferedWriter writer = new BufferedWriter(new FileWriter(file));
writer.write(context.getAttribute("count").toString());
writer.flush();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public class VisitCountsListener implements ServletContextListener {
/**
* 容器启动时
* @param sce
*/
public void contextInitialized(ServletContextEvent sce) {
ServletContext context = sce.getServletContext();
String path = context.getRealPath("/WEB-INF/temp/visit.txt");
File file = new File(path);
int count = 0;
try {
if (file.exists()) {
BufferedReader reader = new BufferedReader(new FileReader(path));
count = Integer.valueOf(reader.readLine());
}
} catch (IOException e) {
e.printStackTrace();
}
context.setAttribute("count", count);
}
/**
* 容器关闭时
* @param sce
*/
public void contextDestroyed(ServletContextEvent sce) {
ServletContext context = sce.getServletContext();
String path = context.getRealPath("/WEB-INF/temp/visit.txt");
File file = new File(path);
try {
if (file.exists()) {
file.delete();
}
file.createNewFile();
BufferedWriter writer = new BufferedWriter(new FileWriter(file));
writer.write(context.getAttribute("count").toString());
writer.flush();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
4.2 在web.xml中配置监听器
<listener>
<listener-class>com.zker.VisitCountsListener</listener-class>
</listener>
<listener>
<listener-class>com.zker.VisitCountsListener</listener-class>
</listener>
[09] 监听器 Listener的更多相关文章
- javaweb学习总结(四十七)——监听器(Listener)在开发中的应用
监听器在JavaWeb开发中用得比较多,下面说一下监听器(Listener)在开发中的常见应用 一.统计当前在线人数 在JavaWeb应用开发中,有时候我们需要统计当前在线的用户数,此时就可以使用监听 ...
- javaWeb学习总结(11)- 监听器(Listener)在开发中的应用
监听器在JavaWeb开发中用得比较多,下面说一下监听器(Listener)在开发中的常见应用 一.统计当前在线人数 在JavaWeb应用开发中,有时候我们需要统计当前在线的用户数,此时就可以使用监听 ...
- javaWeb学习总结(11)- 监听器(Listener)学习
一.监听器介绍 1.1.监听器的概念 监听器是一个专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动.监听器其 实就是一个实现特定接口的普 ...
- java之Servlet监听器Listener
常用应用场景:单点登录.统计在线人数 一.简介 (一)概述 1.Listener 用于监听 java web程序中的事件,例如创建.修改.删除Session.request.context等,并触发响 ...
- 过滤器Filter与监听器Listener
过滤器Filter 过滤器也是一种servlet 它也可以对用户的请求进行处理 , 但是他所做的处理,只是一些轻量级的处理.Fileter就好像jsp页面与servlet之间的一道关卡,如果这个 ...
- JAVA监听器Listener
JAVA监听器Listener 一. 简介 监听器用于对web中内置对象的状态或者属性变化进行监听并做出相应响应的一种Servlet;在内置对象的生命周期中,产生.销毁等状态发生变化时,监听器就会进行 ...
- 过滤器(Filter)、拦截器(Interceptor)、监听器(Listener)
一.Filter 过滤器 1.简介 Filter也称之为过滤器,它是Servlet技术中最实用的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servle ...
- JavaWeb学习 (二十七)————监听器(Listener)在开发中的应用
监听器在JavaWeb开发中用得比较多,下面说一下监听器(Listener)在开发中的常见应用 一.统计当前在线人数 在JavaWeb应用开发中,有时候我们需要统计当前在线的用户数,此时就可以使用监听 ...
- Servlet 监听器Listener详解
转自:http://blog.csdn.net/u012228718/article/details/41730799 一.简介 (一)概述 1.Listener 用于监听 Javaweb程序中的事件 ...
随机推荐
- 将本地sql文件导入到mysql中
cmd命令操作:先创建一个同名数据库,然后通过source导入sql文件 1.启动mysql 2.mysql -uroot -p 输入密码运行mysql 3.创建一个同名数据库 create data ...
- Framework7
完美的HTML框架 可以构建精美的iOS & Android 应用
- 【HotSpot】jps命令行详解
jps (JVM Process Status) jdk提供的一个查看当前Java进程的小工具. 命令输入格式:jps [选项 ] [ 主机号 ] [options]选项 : -q:仅输出VM标识符, ...
- 【Spring】装配Bean 组件扫描
实现自动装配需要用注解:注解分为 spring规范和java规范 ,java规范需要引入javax.inject 包 ,使用maven,直接引入. 从中可以看到 @Named @Inject属于jav ...
- Jmeter录制脚本工具之chrome插件--BlazeMeter
前几天在我们的交流群,看到有童鞋问到BlazeMeter这个工具的用法,感觉还是一个比较不错的插件,比起我们大费周章的去安装badboy或者是使用Jmeter的代理服务器去录制脚本要容易多啦!大家有问 ...
- Freemarker的使用方法
1. Freemarker概念 1.1 什么是freemarker FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出.FreeMarker与Web容器无关,即在Web运 ...
- mac系统webstorm快捷键
WebStorm 是jetbrains公司旗下一款JavaScript 开发工具.被广大中国JS开发者誉为"Web前端开发神器"."最强大的HTML5编辑器". ...
- cocoapods的安装和使用以及版本升级遇到的问题
一.CocoaPods是什么? CocoaPods是一个负责管理iOS项目中第三方开源库的工具.CocoaPods的项目源码在Github上管理.该项目开始于2011年8月12日,在这两年多的时间里, ...
- Zookeeper的安装的配置
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt192 安装和配置详解 本文介绍的 Zookeeper 是以 3.2.2 这个 ...
- 【打死树莓派】-树莓派3代jessie+Opencv-解决安装不了libgtk2.0-dev包问题
按照国际法先贴问题 Some packages could not be installed. This may mean that you have requested an impossible ...