zoukankan      html  css  js  c++  java
  • JavaWeb的三大组件之事件监听组件(Listener)

    JavaWeb监听器

    三大组件:

    1. Servlet
    2. Listener
    3. Filter

    监听器:

    1. 它是一个接口,内容由我们来实现;
    2. 它需要注册,例如注册在按钮上!
    3. 监听器中的方法,会在特殊事件发生时被调用!

     

    JavaWeb中的监听器

    一、生命周期监听与属性监听

    ServletContext

         生命周期监听:ServletContextListener,它有两个方法,一个在创建时调用,一个在销毁时调用;

    •                void contextInitialized(ServletContextEvent sce):创建Servletcontext时
    •                void contextDestroyed(ServletContextEvent sce):销毁Servletcontext时

         属性监听:ServletContextAttributeListener,它有三个方法,一个在添加属性时调用,一个在替换属性时调用,

                                    最后一个是在移除属性时调用。

    HttpSession

         生命周期监听:HttpSessionListener,它有两个方法,一个在创建时调用,一个在销毁时调用;

    •                void sessionCreated(HttpSessionEvent se):创建session时
    •                void sessionDestroyed(HttpSessionEvent se):销毁session时

         属性监听:HttpSessioniAttributeListener,它有三个方法,一个在添加属性时调用,一个在替换属性时调用,

                                  最后一个是在移除属性时调用。

    ServletRequest

         生命周期监听:ServletRequestListener,它有两个方法,一个在创建时调用,一个在销毁时调用;

         属性监听:ServletRequestAttributeListener,它有三个方法,一个在添加属性时调用,一个在替换属性时调用,

                                  最后一个是在移除属性时调用。

    1. javaWeb中完成编写监听器:
    • 写一个监听器类:要求必须去实现某个监听器接口;
    • 注册,是在web.xml中配置来完成注册!
    <listener>
        <listener-class>包名.类名</listener-class>
     </listener>
    1. 事件对象:
    • ServletContextEvent:ServletContext getServletContext()
    • HttpSessionEvent:HttpSession getSession()
    • ServletRequest:
    • ServletContext getServletContext();
    • ServletReques getServletRequest();
    • ServletContextAttributeEvent:
    • ServletContext getServletContext();
    • String getName():获取属性名
    • Object getValue():获取属性值

     

    二、感知监听(都与HttpSession相关)

    • 它用来添加到JavaBean上,而不是添加到三大域上!
    • 这两个监听器都不需要在web.xml中注册!

    1、JavaBean中继承HttpSessionBindingListener接口:感知Bean对象是否存放到Session(存放触发,删除触发)

    2、JavaBean中继承HttpSessionActivationListener,java.io.Serializable接口:Bean对象是否跟随Session钝化(钝化触发,

                                                                                                                              活化触发)Serializable接口用来序列化

          Session的钝化:即会话在一定时间内没有操作,Session信息自动保存至硬盘中以节省内存空间的技术

               --------具体操作:Tomcat7/conf/context.xml添加以下代码,就会将session

                                           保存至Tomcat7workCatalinalocalhost项目名mysession中,如果保存属性有Bean对象

                                           ,要将Bean对象实现序列化(即继承java.io.Serializable接口)。

        <Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1">
    		<Store className="org.apache.catalina.session.FileStore" directory="mysession"/>
        </Manager>	

    总结:看视频说Session钝化后保存至硬盘,Session的活化可在浏览器重新打开(即一个会话关闭后)再次取出对象信息;

               但实际经验是Session的生命周期只有一个会话,或许是我Tomcat的问题,在会话关闭后重新打开时虽然有保存Session

               信息到磁盘,但此时取不出Session信息。

               

  • 相关阅读:
    随机森林算法参数调优
    BAYES和朴素BAYES
    阿里云 金融接口 token PHP
    PHP mysql 按时间分组 表格table 跨度 rowspan
    MySql按周,按月,按日分组统计数据
    PHP 获取今日、昨日、本周、上周、本月的等等常用的起始时间戳和结束时间戳的时间处理类
    thinkphp5 tp5 会话控制 session 登录 退出 检查检验登录 判断是否应该跳转到上次url
    微信 模板消息
    php 腾讯 地图 api 计算 坐标 两点 距离 微信 网页 WebService API
    php添加http头禁止浏览器缓存
  • 原文地址:https://www.cnblogs.com/MrQlyn/p/10236312.html
Copyright © 2011-2022 走看看