最近在学习filter,filter表示过滤器,是javaweb的三大组件之一,
filter过滤器的执行流程应该是:放行前语句,放行,访问资源,资源比如sevlet,jsp,html等,最后执行放行后语句.
当提交表单后,表单中的数据会存在request中,所以放行前需要对request的数据进行处理,当访问到资源,再放行之后,response响应到数据以后,就可以对response响应到的数据进行处理。
关于filter还有一些点。第一就是filter拦截资源路径的配置,我们在写filter时会加上
@WebFilter("/*")的注解,想拦截不同的资源就要配置不同的路径,有下面几种路径,
1.拦截指定的资源,例如index.jsp,那么写法为@WebFilter("/index.jsp")
2.拦截指定目录,写法为@WebFilter("/user/*"),访问user下的所有资源,都将被拦截
3.后缀名拦截,写法为@WebFilter("*.jsp"),访问所有.jsp结尾的资源都会被拦截
4.全部拦截,@WebFilter("/*")
第二就是过滤器链,web中可以有多个过滤器,这多个过滤器就是过滤器链,那么过滤器链的执行流程如何呢,下面以两个过滤器为例,第一个过滤器为FilterDemo1,第二个过滤器为FilterDemo2,他们均有自己的放行前,后逻辑,以及放行,那么他们的执行流程的先后顺序是
1.FilterDemo1的放行前逻辑
2.FilterDemo2的放行前逻辑
3.放行
4.访问资源
5.FilterDemo2的放行后逻辑
6.FilterDemo1的放行后逻辑
下面以图表示加深理解: