【发布时间】:2018-08-26 04:56:02
【问题描述】:
我已经看到,如果我注册一个 Spring GenericFilterBean 类,它会在每次请求时调用。是否可以仅在服务返回响应时调用另一个过滤器(可能是另一个GeneircFilterBean)?基本上,我想实现与JerseyContainerResponseFilter 相同的行为。
提前致谢
【问题讨论】:
标签: java spring-boot servlet-filters
我已经看到,如果我注册一个 Spring GenericFilterBean 类,它会在每次请求时调用。是否可以仅在服务返回响应时调用另一个过滤器(可能是另一个GeneircFilterBean)?基本上,我想实现与JerseyContainerResponseFilter 相同的行为。
提前致谢
【问题讨论】:
标签: java spring-boot servlet-filters
您可以在 chain.doFilter(request, response) 方法之后传递代码。 这是一个例子。
public class SimpleLoggingFilter extends GenericFilterBean {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
chain.doFilter(request, response);
//This code will work after response
if ((response instanceof HttpServletResponse) && (request instanceof HttpServletRequest)) {
HttpServletResponse httpServletResponse = (HttpServletResponse) response;
System.out.println("Response status is " + httpServletResponse.getStatus() +" " +
"Response content-length is " + httpServletResponse.getHeader("content-length"));
}
}
}
【讨论】: