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

    Filter(过滤器)

    过滤器介绍

    web过滤器:过滤器实现对web资源请求的拦截,完成特殊的功能操作,尤其是对请求的预处理。

    作用:一般用于完成通用的操作。如:登录验证、统一编码处理、敏感字符过滤...

    过滤器工作流程

    过滤器生命周期

    • init():在服务器启动后,会创建Filter实例对象,然后调用init()方法,进行初始化。只执行一次。用于加载资源
    • doFilter():拦截请求处理,完成指定功能,每一次请求被拦截资源时,都会执行。
    • destroy():Filter对象会驻留在内存中,在服务器关闭后会调用destroy()方法,Filter对象才被销毁。用于释放资源。

    简单实现过滤器

    • 编写java类实现Filter接口,实现doFilter()方法
    • 配置web.xml文件,对filter类注册,并设置拦截请求

    FilterDemo1.java

    package filter;
    
    import javax.servlet.*;
    import javax.servlet.annotation.WebFilter;
    import java.io.IOException;
    
    public class FilterDemo1 implements Filter {
        public void destroy() {
        }
    
        public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
            System.out.println("过滤器执行了....");
            //请求传回过滤链
            chain.doFilter(req, resp);
        }
    
        public void init(FilterConfig config) throws ServletException {
    
        }
    
    }
    

    web.xml配置

      <filter>
            <filter-name>demo1</filter-name> 
            <filter-class>filter.FilterDemo1</filter-class>
      </filter>
      <filter-mapping>
            <filter-name>demo1</filter-name>
            <url-pattern>/*</url-pattern>   //拦截路径
      </filter-mapping>
    

    FilterConfig 使用

    Filter 的 init 方法中提供了一个 FilterConfig 对象。

    如 web.xml 文件配置如下:

    <filter>
        <filter-name>FilterDemo</filter-name>
        <filter-class>filter.FilterDemo</filter-class>
        <init-param>
            <param-name>initparam</param-name>
            <param-value>我是初始化参数</param-value>
        </init-param>
        </filter>
    

    在 init 方法使用 FilterConfig 对象获取参数:

    public void  init(FilterConfig config) throws ServletException {
        // 获取初始化参数
        String initparam = config.getInitParameter("initparam"); 
        // 输出初始化参数
        System.out.println("初始化参数: " + initparam); 
    }
    

    关于过滤器配置

    关于过滤器配置方式有两种:一种是配置web.xml文件,另外一种就是注解的方式。

    • 配置web.xml文件
      <filter>
            <filter-name>demo1</filter-name>        //过滤器名				
            <filter-class>filter.FilterDemo1</filter-class>   //类所在的包
      </filter>
      <filter-mapping>
            <filter-name>demo1</filter-name>
            <url-pattern>/*</url-pattern>   // filter 所拦截的请求路径
            <dispatcher>REQUEST</dispatcher>  //指定过滤器所拦截的资源被 Servlet 容器调用的方式
      </filter-mapping>
    
    • 使用注解
    @WebFilter("/*")
    
    @WebFilter(value="/index.jsp",dispatcherTypes = DispatcherType.REQUEST)
    

    资源被访问的方式
    ①在web.xml中配置标签
    ②在注解中设置dispatcherTypes属性

    访问方式:

    1. REQUEST:默认值。浏览器直接请求资源
    2. FORWARD:转发访问资源
    3. INCLUDE:包含访问资源
    4. ERROR:错误跳转资源
    5. ASYNC:异步访问资源

    过滤器的应用顺序

    当配置多个过滤器,形成过滤链时,过滤器的执行顺序为web.xml配置中定义的先后顺序来执行。若使用注解配置,则会按照类名的字串符比较规则,值小的先执行。

  • 相关阅读:
    浮点数
    opencv笔记-GFTTDetector
    有向图与关联矩阵
    亚像素角点
    字符串格式化输出
    字符串表示与转换
    Bresenham算法
    罗德里格斯公式
    模型调参
    jave 逻辑运算 vs 位运算 + Python 逻辑运算 vs 位运算
  • 原文地址:https://www.cnblogs.com/jascen/p/11293798.html
Copyright © 2011-2022 走看看