美文网首页
2.过滤器的基本使用

2.过滤器的基本使用

作者: 峰子1994 | 来源:发表于2017-08-02 11:02 被阅读29次
    1.过滤器的生命周期( 实现的是Javax.Servlet这个包中的Filter)
    /**
     第一个过滤器
     */
    public class FirstFiter implements Filter{
       public FirstFiter(){
            System.out.println("过滤器的构造方法");
        }
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
            System.out.println("过滤器的初始化方法init");
        }
        @Override
        public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
            System.out.println("过滤器的doFiter");
        }
        @Override
        public void destroy() {
         System.out.println("过滤器的destroy方法");
        }
    }
    ===================================
    执行的顺序:
    在部署项目的使用,构造方法和init初始化方式就创建好了,然后就是调用dofiter的过滤任务,最后就是执行了销毁的任务了!
    销毁任务:当服务器重新部署,或者服务器崩溃就是执行销毁任务
    
    2.在web.xml中部署过滤
      <!--Fiter的配置-->
        <filter>
            <filter-name>FirstFiter</filter-name>
            <filter-class>com.zhu.Demo.FirstFiter</filter-class>
        </filter>
        <!--Filter映射-->
        <filter-mapping>
            <filter-name>FirstFiter</filter-name>
               <!--这里是针对哪个servlet的去执行过滤任务了-->
            <url-pattern>/FirstServlet</url-pattern>
        </filter-mapping>
    
    3.FiterConfig这个对象(过滤器的初始化参数对象)
     @Override
        public void init(FilterConfig filterConfig) throws ServletException {
            //FiterConfig得到初始化的参数
            //得到一个参数
            System.out.println(filterConfig.getInitParameter("AAAA"));
            //得到全部的参数
            Enumeration<String> enumeration =  filterConfig.getInitParameterNames();
            while (enumeration.hasMoreElements()){
               String paraName =  enumeration.nextElement();
               String paraValue =  filterConfig.getInitParameter(paraName);
                System.out.println(paraName+":"+paraValue);
            }
        }
    在web.xml中配置如下:
     <!--内部函数-->
        <filter>
            <filter-name>ConfigFiter</filter-name>
            <filter-class>com.zhu.Demo.ConfigFiter</filter-class>
            <!--初始化参数1-->
            <init-param>
                <param-name>AAAA</param-name>
                <param-value>aaaaValue</param-value>
            </init-param>
            <!--初始化参数2-->
            <init-param>
                <param-name>BBBB</param-name>
                <param-value>bbbbValue</param-value>
            </init-param>
        </filter>
        <!--Fiter映射文件-->
        <filter-mapping>
            <filter-name>ConfigFiter</filter-name>
            <url-pattern>/FirstServlet</url-pattern>
        </filter-mapping>
    
    4.过滤器链(就是多个过滤器在一起组合在一起了)
    doFilter(ServletRequest request, ServletResponse response, FilterChain chain): 执行过滤任务
    参数一: ServletRequest是HttpServletRequest的父接口。实际上传入的是HttpServletRequest接口的实现类。
    参数二: ServletResponse是HttpServletResponse的父接口。实际上传入HttpServletResponse接口的实现类。
    参数三: FilterChain 过滤器链接口
    doFilter(ServletRequest request, ServletResponse response):执行过滤器链中的下一个过滤器,如果没有下一个过滤器则执行目标资源。
    *****过滤器链: 一个目标资源可以被多个过滤器过滤,那么形成一个过滤器链。***
    注意:过滤器链中的过滤器执行顺序问题:由web.xml中filter-mapping的配置决定顺序。先配置的优先被执行
    

    相关文章

      网友评论

          本文标题:2.过滤器的基本使用

          本文链接:https://www.haomeiwen.com/subject/phjelxtx.html