servlet003:监听器
监听器就类似于js里面的事件,比如鼠标点击事件,键盘事件等。触发就有响应。同样它也是一个普通的java类实现了一个接口ServletRequestListenner,才变成监听器。
同样也有request,response,session,application等多个监听器。实现对不同会话范围的监听。
- 制作监听器,
1.定义一个类,让这个类实现监听器接口
2.实现抽象方法,这个方法的名字就表示了这个方法什么时候执行!
其实就是时间
监听器做好了之后,需要在web.xml中配置
当打开浏览器,访问页面的时候会话就开始了,监听器也开始监听会话,但是监听什么时候结束了?关掉浏览器监听器还是没有结束,我们知道当第一次会话的时候服务器会给客户端发送一个叫jsessionid的cookie。当我们关闭浏览器,客户端的jsessionid销毁了,但是服务器端的没有销毁,所以认定监听器还没有执行完毕,这个jsessionid在服务器端默认保存时间30分钟,30分钟过后就会自动销毁,监听器也就执行完了。但是我们也可以在客户端这边手动销毁jsessionid,需要使用
session.invalidate
每次开客户端浏览器,确实会触发sessionCreated方法,但是关闭浏览器不会让会话销毁,必须调用session.invalidate才能销毁i会话,从而触发sessionDestoryed方法。
致此我们可以利用监听器销毁jsessionid(安全退出)才算退出的原理,可以统计当前在线人数
package com.z.listener;import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;public class MyListener implements HttpSessionListener{private int count=0;@Overridepublic void sessionCreated(HttpSessionEvent se) {System.out.println("会话创建了");count++;System.out.println("在线人数"+count+"个");se.getSession().getServletContext().setAttribute("count",count);}@Overridepublic void sessionDestroyed(HttpSessionEvent se) {System.out.println("会话销毁了");System.out.println("在线人数"+count+"个");se.getSession().getServletContext().setAttribute("count",count);}
}
PageContext pageContext = null;
HttpSession session = null;
ServletContext application = null;
ServletConfig config = null;
JspWriter out = null;
Object page = this;
JspWriter _jspx_out = null;
PageContext _jspx_page_context = null;
- 过滤器里面处理缓存
禁止浏览器缓存所有动态页面的过滤器:
1,有3个HTTP响应头字段都可以禁止浏览器缓存当前页面,他们在Servlet中的代码如下:
response.setDateHeader("Expires",-1);//指定昂也在缓存中的过期时间
response.setHeader("Cache-Control","no-cache");//http消息头,控制网页的缓存
response.setHeader("Cache-Control","no-store")//禁止浏览器缓存
response.setHeader("Pragma","no-cache");//禁止浏览器从缓存中浏览页面类容
servlet003:监听器相关推荐
- jemeter监听器的使用
打开jemeter,新建线程组,添加http请求,在请求下添加监听器: 一.添加一个jp@gc - PerfMon Metrics Collector监听器: 服务器性能监测控件,包括CPU,memo ...
- Servlet,过滤器,监听器,拦截器的区别
由于最近两个月工作比较清闲,个人也比较"上进",利用工作空余时间,也继续学习了一下,某天突然想起struts2和struts1的区别的时 候,发现为什么struts1要用servl ...
- 安卓开发|自定义监听器的三个步骤
首先,要有一个实现View.OnClickListener接口的类 这个类要重写onClick(View v)这个方法,里面加入想要触发的事件 将监听器绑定在要监听的组件上,例如 holder.ver ...
- android监听器在哪里创建,[转载]android开发中创建按钮事件监听器的几种方法
第一种:匿名内部类作为事件监听器类 Button button=(Button) findViewById(R.id.button); button.setOnClickListener(new On ...
- android点击事件注册方式,Android界面控件(3)— 注册同一个点击事件的监听器...
2019独角兽企业重金招聘Python工程师标准>>> CheckBox 和 RadioButton 1.添加控件 .xml代码如下: CheckBox是同时可以选择多个选项的控件 ...
- java web 监听器 例子_Java web技术应用---监听器
监听器的定义 (专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生变化时,立即采取相应的行动) 定义:Servlet规范中定义的一种特殊的类,用于监听Servlet ...
- javascript 变量监听器
javascript 变量监听器 <!DOCdata html> <html lang="en"> <head><meta charset ...
- java超级点击器是怎么实现的_超萌新级的Java学习心得——简单监听器
之前在界面文章中提到,按钮在没有设置事件监听时,无论怎么按都不会起作用,如果要使这些按钮被按下时可以执行不同的操作,就必须使用监听器. ActionListener:可以提供用于监听按钮的监听器,一旦 ...
- java web自定义监听器_Android自定义监听器Listener(自定义Java Callback回调事件)
Callback回调事件介绍 Java或Android中创建异步回调最普遍的做法就是使用listener监听器或者observer观察者模式来解决,listener回调事件通常用于实现一个代码去监听另 ...
- java自定义监听器例子_Spring 实现自定义监听器案例
应用场景: 在一般的javaweb项目中经常有一些缓存是需要再项目启动的时候加载到内存中,这样就可以使用自定义的监听器来实现. 1.在web.xml中声明 com.cn.framework.const ...
最新文章
- jquery操作select取值赋值与设置选中[转]
- 基于python的人工智能Jiagu深度学习自然语言处理开源工具
- 云计算介绍 、TCP/IP协议及配置
- (实用)将wordpad添加到Windows PowerShell中
- harbor镜像清理:使用registry:2.6.2-photon garbage-collect
- 计算机的精度论文,计算机辅助机械零件精度设计毕业论文
- 【C语言】qsort函数用法(转)
- 左手代码,右手带娃,还能发十几篇 paper,程序员女神是如何炼成的?
- Android开源项目汇总
- JDBC:随机生成车牌号,批量插入数据库
- 再论微服务架构之七宗罪
- Speos — 光学产品设计仿真工具
- dd 删除引导扇区_硬盘U盘数据怎么用bootice彻底删除及清零引导记录教程
- angular 万年历_世界豪华手表
- CentOS7 安装svn
- android: Apostrophe not preceded by \ 错误
- 这么写参数校验(validator)就不会被劝退了~
- matlab中exp(liangx),Matlab基础知识
- Composer 简单介绍
- 热那亚中文离线地图App上线
热门文章
- 延安.居民家庭计算机普及率,2004~2014年家庭互联网普及率及电脑持有率
- html div调用js,在div中调用javascript函数
- 前端实现动画的7种方式
- 计算机网络计算1g等于多少MB,1g是多少mb(1g等于多少兆)
- 如何开始使用接口自动化测试脚本
- 入门:安装Python
- 计算机二级ppt没弄内容,计算机二级office考试中PPT母版知识考察点有哪些
- php微信发送客服消息,微信公众号利用客服消息和模板消息实现微信群发
- 如何在微信公众号的开放平台上运维微信公众号
- 英雄联盟一直连接服务器win10,浅析win10英雄联盟连接不上服务器的解决教程