[英]Java: How to get intercept on Filter after it returns from the controller
我已经实现了像这样的过滤器,但只有在请求进入时才触发。我想在出路时拦截响应,即从控制器返回响应时。
我知道Spring Interceptor会给你在触及控制器之前和之后处理请求的功能。 我想做那样的事情。
public class ServiceSessionManagementInterceptor implements Filter{
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
Map<String, String[]> maps = request.getParameterMap();
System.out.println("test");
chain.doFilter(request, response);
}
@Override
public void destroy() {
// TODO Auto-generated method stub
}
}
doFilter()
是魔术发生的地方。 无论你在它之前执行什么,它都将在servlet之前执行,你在它之后放的所有内容都将在servlet service()
方法返回后执行(包括forward / include等)。
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
System.out.println("before");
chain.doFilter(request, response);
System.out.println("after");
}
这样您就可以使用自己的实现来包装ServletRequest
和ServletResponse
对象以添加功能,例如:压缩。
请注意,在执行处理程序方法之前和之后调用Spring Interceptor
。 Servlet Filter
在Servlet
之前和之后执行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.