• 过滤器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 是从上到下顺序读取的。

  • 相关阅读:
    电路的耦合方式
    PCBA与PCB的区别
    vue记住密码功能
    数组变异
    element时间选择器插件转化为YYYY-MM-DD的形式
    box-shadow
    从后台传select的值
    jQuery事件(持续更新中)
    JavaScript对象(持续更新中)
    15分XX秒后订单自动关闭(倒计时)
  • 原文地址:https://www.cnblogs.com/Gazikel/p/14139372.html
Copyright © 2020-2023  润新知