J2EE-filter

什么是filter?

A filter is an object that is invoked at the preprocessing and postprocessing of a request.

过滤器就是一个对请求进行预处理与后置处理的对象。

使用filter有什么作用?

可以用来进行字符集的转换、记录日志、压缩、权限认证、加解密……

以切面的方式添加部分业务逻辑。

filter的接口

Method Description
public void init(FilterConfig config) init() method is invoked only once. It is used to initialize the filter.用于初始化
public void doFilter(HttpServletRequest request,HttpServletResponse response, FilterChain chain) doFilter() method is invoked every time when user request to any resource, to which the filter is mapped.It is used to perform filtering tasks.用于处理请求
public void destroy() This is invoked only once when filter is taken out of the service.用于销毁

如何使用filter?

web.xml中指定filter的类,并指定所需要过滤的路径。

然后编写自己的业务逻辑就好了。

责任链模式的体现

在使用filter时有一个FilterChain参数,这个参数是一个Filter链,在我们执行过滤器请求而不希望请求被拦截的时候,就调用FilterChaindoFilter方法,他会自动将请求移交到下一个Filter/Servlet(走完了所有的Filter)。

这其实就是一个责任链,如果我能把他过滤掉那么我就把他过滤掉,如果不能的话我就交给下一个,让他去进行进一步的处理。

 

打赏