前面文章中已经提到,Filter可以认为是Servlet的 “增强版“,因此配置Filter与配置Servlet非常相似,都需要配置如下两个部分:
- 配置Filter名。
- 配置 Filter 拦截 URL 模式。
- 在 Filter 类中通过 Annotation 进行配置。
- web.xml 文件中通过配置文件进行配置。
上文中Filter类的粗体字代码使用@WebFilter 配置该 Filter 的名字为 log,它会拦截向/*发送的所有的请求。
@WebFilter修饰一个Filter类, 用于对Filter进行配置, 它支持如表1所示的常用属性:
表1 @WebFilter支持的常用属性
在 web.xml 文件中配置 Filter与配置 Servlet 非常相似, 需要为 Filter 指定它所过滤的 URL,并且也可以为 Filter 配置参数。
在 web.xml 文件中为该 Filter 增加如下配置片段:
<!--定义Filter--〉
<filter>
〈!--Filter的名字, 相当于指定@WebFilter的filterName属性--〉
<filter-name>1og</filter-name>
<!-- Fflter的实现类--〉
<filter-class>xx.LogFilter</filter-class>
</filter>
<!--定义Filter拦截的URL地址--〉
<filter-mapping>
〈!--Filter的名字-->
<filter-name>log</filter-name>
〈!--Filter负责拦截的URL,相当于指定@WebFilter的urlPatterns的属性-->
<url-pattern>/*</url-pattern>
</filter-mapping>
从这些代码中可以看出配置 Filter与配置 Servlet 非常相似, 只是配置 Filter 时指定 url-pattern 为户,即表示该 Filter 会拦截所有用户请求。 该 Filter 并未对客户端请 求进行额外的处理, 仅仅在日志中简要记录请求的信息。