Filter依赖于Servlet容器,属于Servlet的一部分,生命周期由Servlet容器管理,是AOP切面编程的一种具体实现,它自身其实是一个通用的特殊的Service,在请求时会先经过过滤器的处理再针对Service发起真正的请求
但是它粒度比较粗,只能针对HttpRequest和HttpResponse前后进行相关校验和逻辑判断处理。同时由于它属于Servlet容器管理,在过滤器内部无法注入Spring容器的实例,也无法调用相关Service方法。
例如:
自定义Filter:
package com.example.maze.util;
import com.example.maze.service.implement.TestService;
import org.apache.catalina.connector.RequestFacade;
import org.springframework.beans.factory.annotation.Autowired;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @author jojo
*/
public class MazeFilter implements Filter {