自己的感想,记录一下,如有错误,望指正~~~~~~~~
通过过滤器,我们可以获得请求信息,然后根据请求信息自己进行修改,或者在安全性中根据请求判断用户权限。
比如我们会在编码转换,security,http请求方法转换(post->delete,post->put)等等。
在spring中:
我们在开发web项目时,都会用到服务器,比如apache。在apache启动来以后,对匹配的url请求,都会执行相应的filter。
FilterChain链:
如果在web.xml中有多个自己写的filter,那么filter的执行顺序是按照从上到下的配置顺序来执行的。那么怎么才能知道一个filter执行完以后继续执行下一个呢?
FilterChain在这里就起作用了。filterchain就相当于一个链表,通过调用方法,去执行下一个。
如下的arg2.doFilter():
package co.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class FilterTest implements Filter{
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
// TODO Auto-generated method stub
System.out.println("sss");
arg2.doFilter(arg0,arg1);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
如果在自己写filter时,后面的filter不能执行,或许会是前面的filter没写这句话造成的。
每天了解一点点,你会…………………………