• 过滤器Filter


    功能

    1、⽤来拦截传⼊的请求和传出的响应。

    2、修改或以某种⽅式处理正在客户端和服务端之间交换的数据流。

    与使⽤ Servlet 类似,Filter 是 Java WEB 提供的⼀个接⼝,开发者只需要⾃定义⼀个类并且实现该接⼝即可。

    复制代码
    package com.southwind.filter;
    import javax.servlet.*;
    import java.io.IOException;
    public class CharacterFilter implements Filter {
     @Override
     public void doFilter(ServletRequest servletRequest, ServletResponse
    servletResponse, FilterChain filterChain) throws IOException, ServletException
    {
     servletRequest.setCharacterEncoding("UTF-8");
     filterChain.doFilter(servletRequest,servletResponse);
     }
    }
    复制代码

    web.xml中配置Filter

    复制代码
    <filter>
     <filter-name>charcater</filter-name>
     <filter-class>com.southwind.filter.CharacterFilter</filter-class>
    </filter>
    <filter-mapping>
     <filter-name>charcater</filter-name>
     <url-pattern>/login</url-pattern>
     <url-pattern>/test</url-pattern>
    </filter-mapping>
    复制代码

    注意:doFilter方法中处理完业务逻辑之后,必须添加

    filterChain.doFilter(servletRequest, servletResponse);

    否则请求/响应无法向后传递,一直停留在过滤器中。

    Filter的声明周期

    当 Tomcat 启动时,通过反射机制调⽤ Filter 的⽆参构造函数创建实例化对象,同时调⽤ init ⽅法实现 初始化,doFilter ⽅法调⽤多次,当 Tomcat 服务关闭的时候,调⽤ destory 来销毁 Filter 对象。

    ⽆参构造函数:只调⽤⼀次,当 Tomcat 启动时调⽤(Filter ⼀定要进⾏配置)

    init ⽅法:只调⽤⼀次,当 Filter 的实例化对象创建完成之后调⽤

    doFilter:调⽤多次,访问 Filter 的业务逻辑都写在 Filter 中

    destory:只调⽤⼀次,Tomcat 关闭时调⽤。 同时配置多个 Filter,Filter 的调⽤顺序是由 web.xml 中的配置顺序来决定的,写在上⾯的配置先调用,因为 web.xml 是从上到下顺序读取的。

  • 相关阅读:
    《机器与人》(读至第一章)
    Solution Architect
    InfoQ Trends Report
    阿里云场景化阿里云企业数字化转型售前方法PSA
    AWS 6R
    .NET Core Ecosystem
    《如何阅读一本书》
    《数字化转型方法论:落地路径与数据中台》
    《亿级流量网站架构核心技术》
    .NET面试题整理
  • 原文地址:https://www.cnblogs.com/lmygq1728/p/14160882.html
Copyright © 2020-2023  润新知