什么是filter
- filter成为过滤器或拦截器,基本功能是对servlet容器调用servlet的过程进行拦截,从而早servlet进行响应处理前后实现一些特殊功能。
- 当浏览器访问服务器中的目标资源时,会被filter拦截,在filter中进行预处理操作,然后再将请求转发给目标资源
- 当服务器接收到这个请求后会对其进行响应,在服务器处理响应的过程汇总,也需要先将响应结果发送给拦截器,在拦截器中对响应结果进行处理后,才会发送给客户端,
其实filter过滤器就是一个实现了javax.servlet.Filter接口的类,在javax.servlet.Filter接口中定义了三个方法
init(FilterConfig filterconfig):init()方法用来初始化过滤器,开发人员可以在init()方法中完成与构造函数类似的初始化功能,如果初始化代码中要使用到filterConfig对象,那么这些初始化代码就只能在filter的init()方法中编写,而不能在构造方法中编写。
doFilter(ServletRequest request,ServletResponse response,FilterChain chain):doFilter()方法用多个参数,其中参数request和response为web服务器或Filter链中的上一个Filter传递过来的请求和响应对象;参数chain代表当前filter链的对象,在当前Filter对象中的doFilter()方法内部需要调用FilterChain对象的dofilter()方法,才能把请求交付给Filter链汇总的下一个filter或者目标程序去处理。
- destory():此方法在web服务器卸载filter对象之前被调用,该方法用于释放被filter对象打开的资源,例如关闭数据库和IO流