从drop wizard的文档中,它使用针对滤镜配置的平针织过滤器。在请求到达注册资源之前调用过滤器。但是,我想装饰从我的资源中提供的响应。有没有办法根据网址格式配置匹配后过滤器?
答案 0 :(得分:3)
第一个选项 :
如果您希望过滤掉请求或在它们到达您的资源之前修改它们,Yourclass会实现ContainerRequestFilter
和
如果要在传递响应后过滤掉响应或修改响应,Yourclass会实现ContainerResponseFilter。
第二个选项 : 您可以使用servlet过滤器 - > http://dropwizard.io/manual/core.html#servlet-filters。如果页面在您查看时已更改,请在此处输入实际说明:
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");
}
}
}
}
在你的跑步中():
environment.servlets().addFilter("DateHeaderServletFilter", new DateHeaderServletFilter())
.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), true, "/*");
您可以配置为true或false,如果它在之前或之后。希望这会有所帮助。