在Jersey生命周期中,一个人如何拦截请求?


问题内容

我已经用了一年多的时间来使用Jersey,但偶然发现了一个我找不到答案的问题:如何截获(或连接)Jersey请求的生命周期?

理想情况下,我将能够在容器从网络接受请求的时间到调用处理程序方法的时间之间执行一些自定义过滤/验证/拒绝。如果有一种简单的方法可以按子路径过滤拦截器(例如,在/下有一个拦截器,在/
user /下有另一个拦截器,等等),则可以加分。

谢谢!

编辑:为了更清楚一点,此处的总体思路是能够编写一些可用于许多API调用的代码,而不必从每个处理程序方法中显式调用该代码。这将减少额外的代码,并消除了传递请求上下文的需要。


问题答案:

我找到了答案。

首先,创建一个实现ContainerRequestFilter的类。该接口指定以下方法,在该方法中进行过滤。ContainerRequest对象包含有关当前请求的信息。

public ContainerRequest filter(ContainerRequest req);

之后,在web.xml的servlet配置中包含以下XML

<init-param>
  <param-name>com.sun.jersey.spi.container.ContainerRequestFilters</param-name>
  <param-value>path.to.filtering.class</param-value>
</init-param>

资料来源:

http://jersey.576304.n2.nabble.com/ContainerRequestFilter-and-Resources-
td4419975.html

http://markmail.org/message/p7yxygz4wpakqno5