繁体   English   中英

Java:如何从控制器返回后对Filter进行拦截

[英]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");
}

这样您就可以使用自己的实现来包装ServletRequestServletResponse对象以添加功能,例如:压缩。

请注意,在执行处理程序方法之前和之后调用Spring Interceptor Servlet FilterServlet之前和之后执行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM