ServletFilter 中 doFilter()方法将调用过滤链中的下一个过滤方法,当下一个方法完成后,控制权将重新回到调用改方法的上级过滤器中。类似于 递归调用。
![]() |
另外,如果过滤器的doFilter()方法中 写出了定制的响应后,方法无需连到其它过滤器就能返回。这就是过滤器阻止后续处理的方法。
public void doFilter( ServletRequest req,
ServletResponse res, FilterChain chain)
throws IOException, ServletException {
PrintWriter out = res.getWriter();
out.write("Access Denied");
out.flush();
out.close();
}
以上为有FilterChain chain和无FilterChain chain的区别,当无chain.doFilter(req, res);时下个一个filter就不会被调用。
本文详细介绍了ServletFilter中的doFilter()方法如何实现过滤链的调用,包括递归调用过程及如何阻止后续过滤器的执行。此外,还展示了通过定制响应来终止过滤流程的具体示例。

1183

被折叠的 条评论
为什么被折叠?



