Jersey是一款实现了JAX-RS标准的RESTful Web Services开发框架。
Jersey的Filter主要用于操作HTTP请求或响应的Headers, Methods和URI等参数。而相比较,Jersey的Interceptor主要操作Entity的输入流和输出流,如对Entity输入流进行zip/unzip。
1. Filter的分类
1) 根据Filter的功能
- 请求过滤器,操作HTTP请求的过滤器。
- 响应过滤器,操作HTTP响应的过滤器。
2) 根据处理的位置(客户端还是服务端)
- 服务端过滤器,过滤操作在服务端进行处理。
- 客户端过滤器,过滤操作在客户端进行处理。
3) 根据处理的时机(仅适用于服务端请求过滤器)
请求过滤器的操作,都是发生在服务端资源尚未处理之前。但根据是否改变目标的服务端资源,还可以细分如下:
- post-matching,默认,请求的服务端资源已经明确,在到达服务端资源之前通过过滤器操作请求。过滤器不能改变请求的资源目标。
- pre-matching,设置@PreMatching,过滤器可以操作请求的目标,转换到服务器的其他资源。
2. Filter接口
- ContainerRequestFilter接口,服务端请求过滤器
public void filter(ContainerRequestContext requestContext) throws IOException {...}