首先需要明确如下几个概念:
1:web开发的时候,过滤器属于java原生组件,而拦截器属于spring框架的组件,从它们的参数就可以看出来,过滤器参数为ServletRequest, 而拦截器为HttpServeletRequest,因为spring本来就是web开发针对的就是http协议,而java则是针对所有网络通信不单单是http协议。
2:需要了解一下ServletRequest HttpServletRequest 之间的联系和区别
3:tomcat处理http请求的。Tomcat将请求转换成了RequestFacade传给过滤器,而RequestFacade实现了HttpServlestRequest接口。至于如何转换可以看(http://blog.youkuaiyun.com/aesop_wubo/article/details/7630440)
4:大部分IO输入流是无法重复读取的,只能读取一次。再读取时,会抛出IO异常。无论是get请求还是