zoukankan      html  css  js  c++  java
  • 02 Filter过滤器

    Filter

    一、Filter过滤器

    • Filter过滤器它是JavaWeb的三大组件之一。三大组件分别是:Servlet程序、Listener监听器、Filter过滤器

    • Filter过滤器是JavaEE的规范。也就是接口

    • Filter过滤器作用:拦截请求,过滤响应。

    • 拦截请求常见的应用场景有:

      • 权限检查
      • 日记操作
      • 事务管理
        ...

    二、Filter初体验

    image-20200916101955843

    • Filter过滤器的使用步骤:

      • 1、编写一个类去实现Filter 接口

      • 2、实现过滤方法doFilter()

        //AdminFilter.java
        
        Httpsession session = httpservletRequest.getsession();
        object user = session.getAttribute("user");
        HttpservletRequest httpservletRequest = (HttpServletRequest) servletRequest;
        
        //如果等于null,说明还没有登录
        if (user == null) {
            servletRequest.getRequestDispatcher("/login.jsp").forward(servletRequest,servletResponse);
        	return;
        } 
        else{
        	//让程序继续往下访问用户的目标资源
        	filterchain.doFilter(servletRequest,servletResponse);
        )
        
      • 3、到web.xml中去配置Filter的拦截路径

        <!-- web.xml -->
        
        <!--filter标签用于配置一个Filter过滤器-->
        <filter>
        	<!--给fiLter起一个别名-->
        	<filter-name>AdminFilter</filter-name>
        	<!--配置filter的全类名-->
        	<filter-class>com.atguigu.filter.AdminFilter</filter-class>
        </filter>
        
        <!--filter-mapping配置FiLter过滤器的拦截路径-->
        <filter-mapping>
        	<!--filter-name表示当前的拦截路径给哪个filter使用-->
        	<filter-name>AdminFilter</filter-name>
        	<!-- url-pattern配置拦截路径表示请求地址为: http://ip:port/工程路径/映射到IDEA的web目录
        		 admin/*表示请求地址为: http://ip:port/工程路径/ admin/* 
        	-->
        	<url-pattern>/admin/*</url-pattern>
        </filter-mapping>
        

    三、Filter的生命周期

    • Filter的生命周期包含几个方法
      • 1、构造器方法
      • 2、init初始化方法
        第1,2步,在web工程启动的时候执行(Filter已经创建)
      • 3、doFilter过滤方法
        第3步,每次拦截到请求,就会执行
      • 4、destroy销毁
        第4步,停止web工程的时候,就会执行(停止web工程,也会销毁Filter过滤器)

    四、FilterConfig类

    • FilterConfig类见名知义,它是Filter过滤器的配置文性类。

    • Tomcat每次创建Filter的时候,也会同时创建一个FilterConfig类,这里包含了Filter配置文件的配置信息。

    • FilterConfig类的作用是获取filter过滤器的配置内容

      • 1、获取 Filter的名称filter-name的内容

        filterConfig.getFilterName()
        
      • 2、获取在Filter中配置的init-param初始化参数

        //事先要在web.xml中配置
        filterConfig.getInitParameter("...")
        
      • 3、获取ServletContext对象

        filterConfig.getServletContext()
        

    五、FilterChain过滤器链

    image-20200916135346184

    六、Filter的拦截路径

    • 三种拦截方式

      • 精准匹配

        <ur1-pattern> /admin/jackyfu.html</url-pattern>
        
      • 目录匹配

        <url-pattern> /admin/*</url-pattern>
        
      • 后缀名匹配

        <ur1-pattern> *.html</url-pattern>
        
    • Filter过滤器只关心请求的地址是否匹配,而不关心请求的资源是否存在。

  • 相关阅读:
    BZOJ 2653 middle
    BZOJ 3207 花神的嘲讽计划Ⅰ
    BZOJ 3689 异或之
    BZOJ 3037 创世纪
    BZOJ [1264] [ AHOI2006]基因匹配Match
    BZOJ 2186 [Sdoi2008]沙拉公主的困惑
    BZOJ 3362 Navigation Nightmare
    BZOJ 3209 花神的数论题
    BZOJ 1411 ZJOI2009 硬币游戏
    【HDU1573】X问题
  • 原文地址:https://www.cnblogs.com/nojacky/p/13905986.html
Copyright © 2011-2022 走看看