<JavaWeb>初识Filter(过滤器)

471 阅读1分钟

过滤器:通过实现Filter接口的的Java类。顾名思义,我们可以通过使用过滤器来,来规定不能出现的字符串,避免中文乱码,进行权限验证等……
实现过滤器

Step1:实现Filter接口的代码

这里要实现接口的方法,包括了init()、destory(),以及doFilter(ServletRequest,ServletResponse,FilterChain filterChain)前两个方法与Servlet的一致,同样是在web服务器加载和销毁时执行,且仅执行一次。而我们通过查看最后一个方法的FilterChain参数源码,发现其本身是接口,且存在有doFilter()方法。FilterChain其实就是Java中通过链式结构,将所有过滤器存储在这个过滤器链中,通过判断是否符合条件来执行一个又一个的过滤器,直到都通过后再执行目标资源。

Step2:filter的部署

通过在web.xml中进行部署,当然也可以通过注解进行配置:

@WebFilter(filterName = "FilterDemo1",urlPatterns = "/*")

("/*"意思指的是所有web资源都要经过过滤器,如果需要指定则添加要经过的web资源的名称即可)

上面提到过,可能存在多个过滤器分别实现不同的功能,而这些过滤器都存储在Java的链式结构中,注意的是过滤器的执行顺序是根据在web.xml的文件中mapping的先后顺序执行,而通过注解方式配置则比较urlPatterns的字符串优先级来决定先后执行。且先执行的过滤器后结束

以上只是简介Filter,关于其应用并未写出。如有错误欢迎指正,一起交流学习!