对于web应用来说,过滤器是一个驻留在服务器端的Web组件,它可以截取客户端和服务器之间的请求与响应信息,并对这些信息进行。当Web容器接收到一个对资源的请求时,它将判断是否有过滤器与这个资源关联,如果有,那么容器将这个请求交给过滤器处理。在过滤器中,你可以改变请求的内容,或者重新设置请求的报头信息,然后再将请求发送给目标资源。当目标资源对请求作出响应的时候,容器同样会将响应先转发给过滤器,在过滤器中你可以对响应的内容进行转换,然后再将响应发送给客户端。
常见的过滤器用途有:对用户请求进行统一的认证、对用户的访问请求进行审核和记录、对用户发送的数据进行过滤或替换、转换图像格式、对响应内容进行压缩以减少传输量、对请求或响应进行加密处理、触发资源访问事件、对XML输出应用XSLT等。
过滤器和拦截器的区别:
1.拦截器基于Java的反射机制,而过滤器基于函数回调;
2.拦截器不依赖于servlet容器,而过滤器依赖于servlet容器;
3.拦截器只能对action请求起作用,过滤器可以对几乎所有的请求起作用;
4.拦截器可以访问action上下文,值栈里的对象,而过滤器不能访问;
5.在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化的时候被调用一次;
6.拦截器可以获取IOC容器中的各个bean,而过滤器不行,在拦截器里注入一个service,可以调用业务逻辑;
7.拦截器需要在Spring配置文件中配置,过滤器只需要在web.xml中配置。