• 监听器与过滤器快速入门


    监听器与过滤器

    监听器

    监听器主要是用于监听某个对象状态变化的组件。

    监听器相关术语:

    • 事件源:被监听的对象

    • 监听器:监听事件源的对象(主要有八个)

    • 注册监听器:监听器与事件源绑定

    • 响应:监听事件源发生变化时,产生的行为

    监听器划分:

    • 域监听器
    • 属性监听器

    域监听器

    域监听器主要有ServletContextListener监听器、HttpSessionListener监听器和ServletRequestListener监听器(由于请求太频繁很少使用)三个。

    以ServlettContextListener为例建立一个监听器。其他的与之类似。

    package com.pony.listener;
    
    import javax.servlet.ServletContext;
    import javax.servlet.ServletContextEvent;
    import javax.servlet.ServletContextListener;
    
    /**
     * @author pony
     * @date 2020/4/21
     */
    
    /**
     * 创建一个监听器必须要实现对应的接口。还要在web.xml中去做关联如下
     <listener>
            <listener-class>com.pony.listener.ServletContextListenerTest</listener-class>
        </listener>
     */
    public class ServletContextListenerTest implements ServletContextListener {
        @Override
        public void contextInitialized(ServletContextEvent sce) {
            /**
             * 获取当前监听对象:
             */
            ServletContext servletContext = sce.getServletContext();
            ServletContext source = (ServletContext) sce.getSource();
    //        System.out.println("init servlet");
        }
    
        @Override
        public void contextDestroyed(ServletContextEvent sce) {
    //        System.out.println("destory servlet");
        }
    }
    

    属性监听器

    主要有三个:ServletContextAttributeListener、HttpSessionAttributeListener、ServletRequestAttriListener。用法与

    域监听器相同。

    过滤器

    当访问资源时可以设置一些过滤器从而对一些请求进行筛选,过滤器嘛,顾名思义。

    实现步骤

    1. 实现filter接口

      package com.pony.web.filter;
      
      import javax.servlet.*;
      import java.io.IOException;
      
      /**
       * @author pony
       * @date 2020/4/21
       */
      public class FirstFilter implements Filter {
          @Override
          public void init(FilterConfig filterConfig) throws ServletException {
      
          }
      
          @Override
          public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
              System.out.println("来到了firstservlet过滤器");
              /**
               * 放行
               */
              filterChain.doFilter(servletRequest,servletResponse);
          }
      
          @Override
          public void destroy() {
      
          }
      }
      
      
    2. web.xml配置

       <filter>
              <filter-name>myfilter</filter-name>
              <filter-class>com.pony.web.filter.FirstFilter</filter-class>
          </filter>
          <filter-mapping>
              <filter-name>myfilter</filter-name>
              <url-pattern>/*</url-pattern>
          </filter-mapping>
      

    生命周期

    init()方法在服务器开启的时候就创建

    destory()方法在服务器关闭时调用

    doFilter()方法当匹配到mapping时才调用

  • 相关阅读:
    windows phone 自动隐藏的Popup from http://www.cnblogs.com/LoveJenny/archive/2011/07/14/2105869.html
    Linq update
    Windows Phone 7 MVVM模式数据绑定和传递参数 from:http://www.cnblogs.com/linzheng/archive/2011/03/27/1997086.html
    web 常见攻击与防护
    SFSA
    HDU 3530
    一笔话问题
    学习技巧
    练题宝典
    雪花
  • 原文地址:https://www.cnblogs.com/ma-liner/p/14196593.html
Copyright © 2020-2023  润新知