zoukankan      html  css  js  c++  java
  • JavaWeb基础—监听器Listener

    javaWeb三大组件:
    servlet
    listener(用的不多)
    filter

    什么叫监听器:
    初次相见:AWT
    二次相见:SAX(XML解析时)
    Bundle 绑定
    监听器是一个接口,内容由我们实现
    它需要注册,例如注册在按钮上
    监听器的方法会在特定事件发生时调用

    特性:
    总是和观察者模式相关。
    事件源:谁飙车
    事件:有人飚车了
    监听器:交警(就监听谁飙车,就注册在事件源身上),监听器的方法(这里就是抓捕)
    当然可能不止一个。

    JavaWeb中的监听器(八大监听器)
    常见的事件源:ServletContext
    生命周期监听:ServletContextListener
    出生(生之后)[相对用的多一些,虽然整个监听器用的都少]
    和死亡(死之前)时两个方法(人是从生之后开始干事)
    属性监听: ServletContextAttributeListener 添加、替换、移除属性三个方法
    HttpSession
    生命周期监听
    类同上,详细参见J2EE api
    属性监听
    ServletQequest
    生命周期监听
    类同上
    属性监听

    外加感知监听:添加到JavaBean中,与HttpSession相关,无需再web.xml中注册
    让javaBean实现HttpSessionBindingListener接口,从此bean就知道是否被添加或者被移除了

    session拥有死而复生的能力(存在本地硬盘)serializable
    取消序列化 在context.xml中加<Manager pathname=""/>
    实际里面打开注释就行,里面已经写好
    session的序列化与反序列化(关闭与启动服务器)
    应用场景:
    1.一般来说,服务器启动后,就不会再关闭了,
    但是如果逼不得已需要重启,而用户会话还在进行
    相应的操作,这时就需要使用序列化将session信息
    保存起来放在硬盘,服务器重启后,又重新加载。
    这样就保证了用户信息不会丢失,实现永久化保存

    简单说就是把对象转换为字节形式存储的过程称为对象的序列化
    当然,这一切前提都是实现Serializable

    2.淘宝每年都会有定时抢购的活动,很多用户会提前
    登录等待,长时间不进行操作,一致保存在内存中,
    而到达指定时刻,几十万用户并发访问,就可能会有
    几十万个session,内存可能吃不消,这时就需要进行
    对象的活化、钝化,让其在闲置的时候离开内存,
    将信息保存至硬盘,等要用的时候,就重新加载进内存
    钝化与活化(太多session了,把长时间不使用的倒出来)
    persistent 持久稳固的
    配置文件中加
    <Manager className="org.apache.catalina.session.PersistentManager"
    saveOnRestart="true" maxActiveSessions="1">
    <Store className="org.apache.catalina.session.FileStore" directory="d:/a">
    </Store>
    </Manager>
    这里最后的监听器:
    HttpSessionActivationListener
    两个方法,分别钝化与活化时调用,JavaBean实现这个接口,他也知道何时被钝化与活化了

    步骤:
    写一个监听器类(实现指定的接口)
    完成注册(只需在web.xml中配置)在myeclipse中直接创建Listener选择实现的接口,会自动在web.xml中注册

    生命周期事件对象:ServletContextEvent (getServletContext()方法最为主要)
    其它类同,主要职责 报告事件源
    属性监听类同(用的不多)
    主要方法event.getName()与getValue()的属性相关方法

  • 相关阅读:
    工作需求----表单多选框checkbox交互
    工作需求——JQ小效果分享下
    JQ返回顶部代码分享~~~~
    css 分享之background-attachment 属性
    CSS3学习之分享下transition属性
    css 伪元素分享!!!
    phpcm v9 任意调用分页/phpcm v9首页调用分页不起作用或者乱码
    facebook分享不能显示图片链接问题
    Fatal error: Uncaught SoapFault exception:解决办法
    VUE项目 启动提示 npn ERRT nissing script: dev解决办法
  • 原文地址:https://www.cnblogs.com/jiangbei/p/6705773.html
Copyright © 2011-2022 走看看