zoukankan      html  css  js  c++  java
  • filter和listener

     一、filter

    import javax.servlet.*;
    import javax.servlet.annotation.WebFilter;
    import java.io.IOException;
    
    /*
    一、Filter
        1、实现Filter接口
        2、配置:
            注解方式:@WebFilter(String)
            web.xml方式:
                <filter>
                    <filter-name>FirstFilter</filter-name>
                    <filter-class>filter.FirstFilter</filter-class>
                </filter>
                <filter-mapping>
                    <filter-name>FirstFilter</filter-name>
                    <url-pattern>/*</url-pattern>
                </filter-mapping>
        3、执行过程:
            1、执行过滤器方法
            2、执行放行后的资源(过滤器链对象.doFilter(请求对象, 响应对象))
            3、继续执行过滤器方法
        4、生命周期:
            1、init:启动tomcat时执行该方法
            2、doFilter:每当请求被过滤规则匹配时执行该方法
            3、destroy:正常关闭tomcat时执行该方法
        5、过滤器配置详解
            * 拦截路径配置
                1、具体资源路径:/index.jsp 只有访问index.jsp资源时,过滤器才会被执行
                2、拦截目录:/user/* 访问/user下的所有资源时,过滤器都会被执行
                3、后缀名拦截:*.jsp 访问所有后缀名为jsp资源时,过滤器都会被执行
                4、拦截所有资源:/* 访问所有资源时,过滤器都会被执行
            * 拦截方式配置
                1、注解配置(设置dispatcherTypes属性):
                    * REQUEST:默认值。浏览器直接请求资源
                    * FORWARD:转发访问资源
                    * INCLUDE:包含访问资源
                    * ERROR:错误跳转资源
                    * ASYNC:异步访问资源
                2、web.xml配置:
                    <filter-mapping>
                        <dispatcher></dispatcher>
                    </filter-mapping>
        6、过滤器链(配置多个过滤器)
            * 执行顺序:
                1、执行过滤器1(doFilter前)
                2、执行过滤器2(doFilter前)
                3、执行资源
                3、执行过滤器2(doFilter后)
                4、执行过滤器1(doFilter后)
            * 过滤器先后顺序问题:
                1、注解配置:按照类名的字符串比较规则比较,值小的先执行
                    * 如:AFilter和BFilter,AFilter就先执行了
                2、web.xml配置:<filter-mapping>谁定义在上边,谁先执行
     */
    @WebFilter("/*")//定义需要过滤的资源名称规则
    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("执行filter方法");
            //放行
            filterChain.doFilter(servletRequest, servletResponse);
            System.out.println("继续执行filter方法");
        }
    
        @Override
        public void destroy() {
    
        }
    }

    二、listener

    /*
    1、实现ServletContextListener接口
    2、重写方法:
        void contextInitialized(ServletContextEvent):服务器启动时执行
        void contextDestroyed(ServletContextEvent):服务器正常关闭时执行
    3、配置监听器:
        注解配置:
            @WebListener
        web.xml配置:
            * 配置:
                <listener>
                    <listener-class>listener.FirstListener</listener-class>
                </listener>
            * 指定初始化参数:
                <context-param>
                    <param-name>contextConfigLocation</param-name>
                    <param-value>/WEB-INF/classes/application.xml</param-value>
                </context-param>
    */
    //@WebListener
    public class FirstListener implements ServletContextListener {
        @Override
        public void contextInitialized(ServletContextEvent sce) {
            //模拟加载配置文件
            ServletContext servletContext = sce.getServletContext();
            String cfg = (String) servletContext.getInitParameter("contextConfigLocation");
            String cfgpath = servletContext.getRealPath(cfg);
            try {
                FileInputStream fis = new FileInputStream(cfgpath);
                System.out.println(fis);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
        }
    
        @Override
        public void contextDestroyed(ServletContextEvent sce) {
    
        }
    }
  • 相关阅读:
    Kotlin扩展深入解析及注意事项和可见性
    Kotlin属性揭秘与延迟初始化特性
    Kotlin伴生对象及其字节码内幕详解
    Kotlin继承与重写重要特性剖析
    Kotlin构造方法详解与初始化过程分析
    Range与面向对象的Kotlin
    Kotlin编译器优化与when关键字详解
    Kotlin基础特性深入讲解
    java读取mysql表的注释及字段注释
    mysql导入导出sql文件
  • 原文地址:https://www.cnblogs.com/linding/p/13600981.html
Copyright © 2011-2022 走看看