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>
  • 然后刷新一下就活化了

最新文章

  1. 使用LogMaster4Net实现应用程序日志的集中管理
  2. Android探索之ContentProvider熟悉而又陌生的组件
  3. oracle中的nvl(), nvl2()函数
  4. jQuery 中 attr() 和 prop() 方法的区别
  5. ElasticSearch部署
  6. 000 VS2013 c++ 框架
  7. release下去除nslog宏
  8. htmlcss笔记--标签默认值样式重置css reset(2)
  9. JavaRTS-DTraceProvider
  10. android分割线
  11. CoreImage-python截取核心图片
  12. php代码在服务器中查看接值
  13. Django框架初识
  14. Web自动化框架LazyUI使用手册(6)--8种控件对应的class,及可对其进行的操作
  15. jmeter中的参数化
  16. 原生js触碰到底部触发函数;
  17. SQL反模式学习笔记19 使用*号,隐式的列
  18. signal() 和 sigaction()
  19. Linux服务器重启后MySQL启动失败
  20. C# 中 ? 和 ??

热门文章

  1. Spring Boot整合Mybatis(注解方式和XML方式)
  2. gets和scanf区别
  3. ASP.NET MVC Web项目中使用Log4Net记录日志,并按照日志类型分文件存储
  4. 警示框UIAlertController的使用(看完马上会用!!)
  5. 【剑指Offer面试编程题】题目1370:数组中出现次数超过一半的数字--九度OJ
  6. video-editing
  7. 「Luogu2264」情书
  8. 修改Xshell字体大小和颜色
  9. SSH框架系列:Spring读取配置文件以及获取Spring注入的Bean
  10. Lesson 46 Hobbies