什么是过滤器
filter 是对客户端访问资源的过滤,符合条件放行,不符合条件不放行。并且可以对目标资源访问前后进行逻辑处理。
编写步骤
- 编写一个实现类,实现 Filter接口及其方法
- 在web.xml中进行注册
实现类
package com.lz.web;
import javax.servlet.*;
import java.io.IOException;
public class FirstFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("------FirstFilter------init");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("------FirstFilter------doFilter");
//需要在这里处理是否放行
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
public void destroy() {
System.out.println("------FirstFilter------destroy");
}
}
web.xml中注册
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<filter>
<filter-name>first</filter-name>
<filter-class>com.lz.web.FirstFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>first</filter-name>
<url-pattern>/MyServlet</url-pattern>
</filter-mapping>
</web-app>
注意
一个url路径可以有多个 过滤器,这些过滤器都放行,才可以访问该资源。
三个生命周期方法
- init 当服务器启动时调用
- doFilter 当访问绑定url的时候调用
- destroy 服务器关闭时调用