Filter概述、接口及配置

目录


一、Filter概述

● Filter称为过滤器,位于客户端与处理程序之间,能够对请求和响应进行检查和修改 ● 当客户端对服务器资源发送请求时,服务器根据过滤规则进行检查,如果满足过滤规则,则对客户请求进行拦截,然后对请求头或请求数据进行修改或检查,并依次通过Filter链,最后将请求交给处理程序 ● 请求信息可以在过滤器中被修改,也可以根据请求条件不让请求发往处理程序

二、Filter接口

编写一个Filter必须实现Filter接口

相关方法:

方法名 说明 default void init(FilterConfig filterConfig) 创建Filter后用于初始化Filter,通过参数FilterConfig对象获取配置参数 void doFilter(ServletRequest var1, ServletResponse var2, FilterChain var3) 用于完成过滤的操作,其中Request对象和Response对象是由上一个过滤器或者Web服务器传递过来的请求和响应对象,FilterChain对象代表当前过滤链对象 default void destroy() 用于释放过滤器中占用的资源,在对象被销毁之前调用

Filter接口提供了三个方法,其中init()方法和destroy()方法是默认方法不强制重写,而doFilter()方法是抽象方法,在实训Filter接口四必须重写

三、Filter配置

配置Filter有两种方式,一种是通过web.xml文件进行配置,一种是通过@WebFilter注解进行配置

web.xml配置方式:

<!--在web.xml文件的web-app标签下写入以下内容-->
<filter>
    <filter-name>FilterDemo</filter-name>
    <filter-class>com.liaoxiangqian.filter.FilterDemo</filter-class>
</filter>
    <filter-mapping>
    <filter-name>FilterDemo</filter-name>
    <url-pattern>/ServletDemo</url-pattern>
</filter-mapping>

@WebFilter注解配置方式:

@WebFilter("/ServletDemo")
public class FilterDemo implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("FilterDemo执行了");
    }
}

@WebFilter常用属性:

属性名 类型 说明 filterName String 指定过滤器名称 urlPattren String[] 指定需要过滤的资源,如某个Servlet或jsp value String[] 等价于urlPattern,不能同时使用 servletNames String[] 指定过滤器将应用于哪些Servlet,取值是@WebServlet中name属性的取值 initParams WebInitParam[] 指定过滤器的一组初始化参数

注意:

如果需要拦截用户的所有请求,则可以使用*号通配符,如:

<url-pattern>/*</url-pattern> @WebFilter("/*")
经验分享 程序员 微信小程序 职场和发展