Web监听器

总共有8个 划分成三种类型

  1. 定义一个类,实现接口
  2. 注册 | 配置监听器

监听三个作用域创建和销毁

  • request —httpServletRequest
  • session —httpSession
  • aapplication — ServletContext
  1. ServletContextListener

    servletcontext创建:

    1. 启动服务器的时候

    servletContext销毁:

    1. 关闭服务器. 从服务器移除项目
  1. ServletRequestListener

    request创建:

    访问服务器上的任意资源都会有请求出现。

    访问 html: 会

    访问 jsp: 会

    访问 servlet : 会

    request销毁:

    服务器已经对这次请求作出了响应。
		public class MyRequestListener implements ServletRequestListener {
@Override
public void requestDestroyed(ServletRequestEvent sre) {
System.out.println("servletrequest 销毁了");
} @Override
public void requestInitialized(ServletRequestEvent sre) {
System.out.println("servletrequest 初始化了");
}
}

<listener>
<listener-class>com.itheima.listener.MyRequestListener</listener-class>
</listener>

  1. HttpSessionListener

    session的创建

    只要调用getSession

    html: 不会

    jsp: 会 getSession();

    servlet: 会

    session的销毁

    超时 30分钟

    非正常关闭 销毁

    正常关闭服务器(序列化)

		public class MySessionListener implements HttpSessionListener {

			@Override
public void sessionCreated(HttpSessionEvent se) {
System.out.println("创建session了");
} @Override
public void sessionDestroyed(HttpSessionEvent se) {
System.out.println("销毁session了");
}
}

作用:

ServletContextListener

利用它来,在servletcontext创建的时候,

  1. 完成自己想要的初始化工作

  2. 执行自定义任务调度。 执行某一个任务。 Timer

HttpSessionListener

统计在线人数.

监听三个作用域属性状态变更

可以监听在作用域中值 添加 | 替换 | 移除的动作。

  • servletContext — ServletContextAttributeListener

  • request — ServletRequestAttributeListener

  • session — HttpSessionAttributeListener

监听httpSession里面存值的状态变更

这一类监听器不用注册。

  • HttpSessionBindingListener

监听对象与session 绑定和解除绑定 的动作

  1. 让javaBean 实现该接口即可
		@Override
public void valueBound(HttpSessionBindingEvent event) {
System.out.println("对象被绑定进来了");
} @Override
public void valueUnbound(HttpSessionBindingEvent event) {
System.out.println("对象被解除绑定");
}
  • HttpSessionActivationListener

用于监听现在session的值 是 钝化 (序列化)还是活化 (反序列化)的动作

  • 钝化 (序列化)

把内存中的数据 存储到硬盘上

  • 活化 (反序列化)

把硬盘中的数据读取到内存中。

NO01:在bean包下创建一个bean并且实现HttpSessionActivationListener , Serializable接口,这是与其他监听不同的地方


public class Bean02 implements HttpSessionActivationListener , Serializable{ private String name; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} @Override
public void sessionWillPassivate(HttpSessionEvent se) {
System.out.println("session中的值被钝化了...");
} @Override
public void sessionDidActivate(HttpSessionEvent se) {
System.out.println("session中的值被活化了..."); } }

NO02:创建一个JSp页面用来加个数据进去

<%@page import="com.itheima.domain.Bean02"%>

这是demo04页面

<%
Bean02 bean = new Bean02();
bean.setName("lisisi"); session.setAttribute("bean", bean);
%>
  • session的钝化活化的用意何在

session中的值可能会很多, 并且我们有很长一段时间不使用这个内存中的值, 那么可以考虑把session的值可以存储到硬盘上【钝化】,等下一次在使用的时候,在从硬盘上提取出来。 【活化】

  • 如何让session的在一定时间内钝化.

做配置即可

1. 在tomcat里面 conf/context.xml 里面配置

		对所有的运行在这个服务器的项目生效  

2. 在conf/Catalina/localhost/context.xml 配置

		对 localhost生效。  localhost:8080

3. 在自己的web工程项目中的 META-INF/context.xml

		只对当前的工程生效。

	maxIdleSwap : 1分钟不用就钝化
directory : 钝化后的那个文件存放的目录位置。 D:\tomcat\apache-tomcat-7.0.52\work\Catalina\localhost\ListenerDemo\itheima <Context>
<Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1">
<Store className="org.apache.catalina.session.FileStore" directory="itheima"/>
</Manager>
</Context>
  • 然后刷新一下就活化了

Listener(Web监听器、活化、钝化)的更多相关文章

  1. Web 监听器

    什么事web 监听器? Servlet规范中定义的一种特殊类 用于监听ServletContext.HttpSession和ServletRequest等象的创建与销毁的事件 用监听域对象的属性发生修 ...

  2. Web监听器导图详解(转)

    阅读目录 Web监听器 监听器的分类 Servlet版本与Tomcat版本 getAttribute与getParameter的区别 参考 监听器是JAVA Web开发中很重要的内容,其中涉及到的知识 ...

  3. java Web监听器导图详解

    监听器是JAVA Web开发中很重要的内容,其中涉及到的知识,可以参考下面导图: Web监听器 1 什么是web监听器? web监听器是一种Servlet中的特殊的类,它们能帮助开发者监听web中的特 ...

  4. Web监听器导图详解

    监听器是JAVA Web开发中很重要的内容,其中涉及到的知识,可以参考下面导图: Web监听器 1 什么是web监听器? web监听器是一种Servlet中的特殊的类,它们能帮助开发者监听web中的特 ...

  5. Filter过滤器Listener:监听器

    Filter过滤器 1. 概念 web中的过滤器:当访问服务器资源是,过滤器可以将请求拦截下来,完成一些特殊功能: 过滤器的作用 完成通用的操作:例如登录验证.统一编码处理.敏感字符过滤... 快速入 ...

  6. Filter(过滤器)、ThreadLocal(本地线程)、Listener(监听器)

    Filter(过滤器) Filter过滤器它的作用是:拦截请求,过滤响应. 过滤器链 1)执行的顺序依次是: A B C Demo03 C2 B2 A2 2)如果采取的是注解的方式进行配置,那么过滤器 ...

  7. 在自定义的web监听器中嵌入web中的定时事件

    在 http://www.cnblogs.com/myadmin/p/4806265.html 中说明了自定义web监听器的一些东西. 本文中的web定时任务也基于上篇文章的自定义web监听器. 新建 ...

  8. java Web 监听器Listener详解

    简介 JavaWeb中的监听器是Servlet规范中定义的一种特殊类,它用于监听web应用程序中的ServletContext.HttpSession和 ServletRequest这三大域对象的创建 ...

  9. 16.Listener(监听器)

    /*监听器*/ java的事件监听机制(主要是对一些web元素的监听 (ServletContext(计时器),HttpSession和ServletRequest)) 1.事件监听涉及到三个组件:事 ...

随机推荐

  1. 多年珍藏的55w御剑字典

    御剑珍藏55w目录字典,很给力,放在以前直接数据库都能给跑出来. 用法:直接把放入配置文件的目录 链接:https://pan.baidu.com/s/1MGxdd9hH006Y7AO7CpkO8g ...

  2. JSP数据交互二

    1.JSP内置对象:JSP内置对象是 Web 容器创建的一组对象,不用通过手动new就可以使用2.JSP9大内置对象:      对象名称 类型 request (请求对象)  javax.servl ...

  3. js 实现循环遍历数组

    for in循环遍历 let arr = [1, 2, 3, 4, 4, 3], str = '' for (const val in arr) { str += val + ' ' } consol ...

  4. linux之我的互联网面试经验

    互联网面试想必是每个学计算机的学生必不可少的环节,无论你的项目经验再多,你不准备基础知识,也还是无济于事.首先来说说关于工作的事情. 三年前,那时候我还是刚刚快要大四毕业的小鲜肉,那时候有个超大的招聘 ...

  5. Git如何合并Commit

    如果你在 push 你的修改之前想要将本地多次修改后的 commit 合并一下变得更好看,可以使用下面的方法. 指定你要合并的 commit 相关的命令有两种 你可以通过指定修改过去的几个 commi ...

  6. Java对比两个数据库中的表和字段,写个冷门的东西

    Java对比两个数据库中的表和字段,写个冷门的东西 转载的 来源网络 目前所在的项目组距离下个版本上线已经很近了,就面临了一个问题:开发人员在开发库上根据需要增加数据表.数据字段.或者变更了字段类型或 ...

  7. SciPy 统计

    章节 SciPy 介绍 SciPy 安装 SciPy 基础功能 SciPy 特殊函数 SciPy k均值聚类 SciPy 常量 SciPy fftpack(傅里叶变换) SciPy 积分 SciPy ...

  8. 初级入门 --- web GL绘制点

    " 万丈高楼平地起." 01基础知识 一.相关术语 图元 :WebGL 能够绘制的基本图形元素,包含三种:点.线段.三角形. 片元:可以理解为像素,像素着色阶段是在片元着色器中. ...

  9. api文档方法参数

    in型参数,带信息进去用: out型参数,方法执行结束,带着信息出来 如: CreateProcessW(     _In_opt_ LPCWSTR lpApplicationName,     _I ...

  10. Windows环境下的32位汇编语言程序设计

    一个逆向的告诉我可以尝试学一下8086处理器,再回头看一看自己学过的会有提高学呗,8086处理器怎么学....然后就学了8086的汇编, 好友就分享了琢石成器——Windows环境下的32汇编语言设计 ...