/**
* @author SharkSeven
*/
public void doFilter(Request request,Response response,FilterChain chain){
/**
* 这是正确的写法
*/
if(index == filters.size())
return ;
Filter filter = filters.get(index);
index ++;
filter.doFilter(request, response, chain);
//这是一个类似递归,但整个工程不是递归,是基于递归,其中的代码片段
//错误信息:Exception in thread "main" java.lang.StackOverflowError
//下面这个写法其实和正确的十分类似,如果这不是个递归的场景,和上面的写法是一样的,而且还能少声明变量,
//不过在这个场景,调用过程是不一样
//堆栈溢出,原因是在进行递归前没有index++,所以递归的结束条件永远不会满足,直达把堆栈用完,程序挂了
// if(index==filters.size()){
// return;
// }
//
// filters.get(index).doFilter(request, response, chain);
// index++;
//错误信息:Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
//这个就比较简单了,在满足结束条件后,index++,这时index就大于list的size了,数组越界
// if(index==filters.size()){
// return;
// }
// index++;
// filters.get(index).doFilter(request, response, chain);
}