Jersey 在dropwizard中添加后期匹配筛选器

Jersey 在dropwizard中添加后期匹配筛选器,jersey,dropwizard,Jersey,Dropwizard,从drop wizard的文档中,它使用jersey的过滤器进行过滤器配置。在请求到达已注册资源之前调用筛选器。然而,我想装饰一下我的资源所提供的回应。有没有办法根据url模式配置帖子匹配筛选器?第一个选项: 如果您希望筛选出请求或在请求到达资源之前对其进行修改,则Yourclass将实现ContainerRequestFilter 及 如果您希望过滤掉响应或在响应传递给您的资源后修改它们,那么您的类将实现ContainerResponseFilter 第二个选项: 您可以使用servlet过滤

从drop wizard的文档中,它使用jersey的过滤器进行过滤器配置。在请求到达已注册资源之前调用筛选器。然而,我想装饰一下我的资源所提供的回应。有没有办法根据url模式配置帖子匹配筛选器?

第一个选项

如果您希望筛选出请求或在请求到达资源之前对其进行修改,则Yourclass将实现ContainerRequestFilter

如果您希望过滤掉响应或在响应传递给您的资源后修改它们,那么您的类将实现ContainerResponseFilter

第二个选项: 您可以使用servlet过滤器->。如果查看页面时页面已更改,则实际描述如下:

public class DateNotSpecifiedServletFilter implements javax.servlet.Filter {
    // Other methods in interface ommited for brevity

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        if (request instanceof HttpServletRequest) {
            String dateHeader = ((HttpServletRequest) request).getHeader(HttpHeaders.DATE);

            if (dateHeader == null) {
                chain.doFilter(request, response); // This signals that the request should pass this filter
            } else {
                HttpServletResponse httpResponse = (HttpServletResponse) response;
                httpResponse.setStatus(HttpStatus.BAD_REQUEST_400);
                httpResponse.getWriter().print("Date Header was not specified");
            }
        }
    }
}
在您的跑步中()


如果是在之前或之后,则可以使用true或false进行配置。希望这有帮助。

NB。这个答案似乎特定于Dropwizard>=7.x。DW中的语法
environment.servlets().addFilter("DateHeaderServletFilter", new DateHeaderServletFilter())
                      .addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), true, "/*");