zoukankan      html  css  js  c++  java
  • 监听器与过滤器快速入门

    监听器与过滤器

    监听器

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

    监听器相关术语:

    • 事件源:被监听的对象

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

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

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

    监听器划分:

    • 域监听器
    • 属性监听器

    域监听器

    域监听器主要有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时才调用

  • 相关阅读:
    未让换行符弄错了数据
    REPLICATE
    内存 商业智能
    sql
    PageMethods介绍
    在ASP.NET AJAX中如何判断浏览器及计算其宽高
    用JavaScript实现网页图片等比例缩放
    js技巧收集(200多个)(转自:asp.net中文俱乐部)
    C#调用ORACLE存储过程返回结果集及函数
    Using PageMethods to access Session data
  • 原文地址:https://www.cnblogs.com/ma-liner/p/14196593.html
Copyright © 2011-2022 走看看