1. 过滤器(Filter)
Filter 是在 Servlet 规范中定义的,是 Servlet 容器支持的。
Filter有如下几个用处
主要的用途是设置字符集、控制权限、控制转向、做一些业务逻辑判断等
Filter可以认为是Servlet的一种“加强版”,它主要用于在HttpServletRequest到达Servlet之前,拦截客户的请求,对用户请求进行预处理,也可以对HttpServletResponse进行后处理,是个典型的处理链。使用Filter完整的流程是:Filter对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应进行后处理
Filter有如下几个种类
- 用户授权的Filter:Filter负责检查用户请求,根据请求过滤用户非法请求。
- 日志Filter:详细记录某些特殊的用户请求。
- 负责解码的Filter:包括对非标准编码的请求解码。
- 能改变XML内容的XSLT Filter等。
- Filter可以负责拦截多个请求或响应;一个请求或响应也可以被多个Filter拦截。
创建一个Filter只需两个步骤
- 创建Filter处理类(必须实现javax.servlet.Filter接口)
- web.xml文件中配置Filter
2. 拦截器(Interceptor)
拦截器是在 Spring容器内的,是Spring框架支持的。
用于在某个方法被访问之前,进行拦截,然后在之前或之后加入某些操作。拦截是AOP的一种实现策略。
在Spring构架的程序中,要优先使用拦截器。几乎所有 Filter 能够做的事情, Interceptor 都能够轻松的实现