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就不会被调用。