filter的简单介绍

filter,过滤器,顾名思义,就是起到一个对来访者进行筛选过滤的功能

在访问之前,通过一系列的过滤器对请求进行修改、判断等,把不符合规则的请求在中途拦截或修改。

最常见的有两种

  1. 对用户状态进行筛选,例如,一些页面,没有登录的游客状态,不允许访问,会跳转到登录界面
  2. 对某些资源文件的访问权限进行筛选,没有该文件的下载权限的,拒绝访问

除此之外,也可以对响应进行过滤,拦截或修改响应,设置编码、通过session进行属性过滤。

下面介绍下filter的配置过程:

  1. 创建filter.java

建议新手通过ide直接创建filter,这样会直接在web.xml中添加响应的配置

filter命名一般为filters.XxxFilter.java

创建好filter后,会在.java文件中生成init()、doFilter()、destroy()三个方法,也代表了一个filter的一个执行过程。其中,init()和destroy()均只执行一次,一般的过滤方法都会放在doFilter中。

public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {  
      HttpServletRequest request=(HttpServletRequest)req;  
      HttpServletResponse response=(HttpServletResponse)resp;  
      User user = HrmUserVarify.getUser (request , response) ;  
      if("1".equals(user.getUID())){  
           chain.doFilter(req,resp);  
      }  
}  

      2.配置web.xml

  1. 对某个文件进行请求过滤:
  1. <filter>  
        <filter-class>weaver.filters.MyFilter</filter-class>  
        <filter-name>myFilter</filter-name>  
    </filter>  
    <filter-mapping>  
        <filter-name>myFilter</filter-name>  
        <url-pattern>/test/new.jsp</url-pattern>  
    </filter-mapping>  
    
    2. 对某类文件进行过滤
<filter-mapping>  
    <filter-name>ECompatibleFilter</filter-name>  
    <url-pattern>*.css</url-pattern>  
</filter-mapping>  

       3.对某个目录下的所有文件进行配置

  1. <filter-mapping>  
        <filter-name>XssFilter</filter-name>  
        <url-pattern>*.do</url-pattern>  
    </filter-mapping>  

     

      4.对某个请求进行过滤

<filter-mapping>  
    <filter-name>XssFilter</filter-name>  
    <url-pattern>/log/*</url-pattern>  
</filter-mapping>  

经过上边两步,一个filter已经完成配置了,下面是配置多个filter的情况

3.多个filter的情况

一个filter可以配置多个filter-mapping,表示对多种请求进行过滤

例:

在web.xml中,配置两个filter,对同一jsp页面进行拦截过滤

  1. <filter-mapping>  
       <filter-name>myFilter</filter-name>  
       <url-pattern>/test/new.jsp</url-pattern>  
    </filter-mapping>  
    <filter-mapping>  
       <filter-name>myFilter2</filter-name>  
       <url-pattern>/test/new.jsp</url-pattern>  
    </filter-mapping>  

得到如下的结果

  1. <!-- Connected to server -->  
    MyFilter2  init  
    MyFilter  init  
      
    <!-- visit server -->  
    MyFilter  doFilter  
    MyFilter2  doFilter  
      
    <!-- end close the server -->  
    MyFilter2  destroy  
    MyFilter  destroy  
    <!-- Disconnected from server-->  

最后要知道的是,进入filter的先后顺序与mapping的配置的先后顺序有关,而与filter的配置的先后顺序无关

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值