Filter篇
1、 Filter简介
Filter是Servlet的增强版,主要用于对用户请求进行预处理,也可以对HpptServletResponse进行后处理,是典型的处理链。过滤器的定义是一个服务器端的组件,他可以截取用户端的请求与响应信息,并对这些信息过滤。
完整的流程是Filter对用户请求进行预处理,接着讲请求交给Servlet进行处理并生成响应,最后Filter最对服务器响应进行后处理。Filter可负责拦截多个请求或是响应,一个请求或是响应也可被多个Filter拦截。
2、Filter是如何实现拦截的?
Filter接口中有一个doFilter方法,当我们编写好Filter,并配置对哪个web资源进行拦截后,WEB服务器每次在调用web资源的service方法之前,都会先调用一下filter的doFilter方法,因此,在该方法内编写代码可达到如下目的:
调用目标资源之前,让一段代码执行。
是否调用目标资源(即是否让用户访问web资源)。
调用目标资源之后,让一段代码执行。
web服务器在调用doFilter方法时,会传递一个filterChain对象进来,filterChain对象是filter接口中最重要的一个对 象,它也提供了一个doFilter方法,开发人员可以根据需求决定是否调用此方法,调用该方法,则web服务器就会调用web资源的service方 法,即web资源就会被访问,否则web资源不会被访问。
3、过滤器和拦截器的区别:
拦截器用的是反射机制,过滤器是函数回调。