Filter 可认为是 Servlet 的一种 “ 加强版
“,它主要用于对用户请求进行预处理,也可以对 HttpServletResponse 进行后处理,是个典型的处理链。 Filter 也可对用户请求生成响应,这一点与 Servlet相同
,
但实际上很少会使用 Filter 向用户请求生成响应。 使用 Filter 完整的流程是Filter 对用户请求进行预处理, 接着将请求交给 Servlet 进行处理并生成响应, 最后 Filter 再对服务器进行后处理。
Filter 有如下几个用处:
- 在 HttpServletRequest 到达 Servlet 之前,拦截客户的 HttpServletRequest。
- 根据需要检查 HttpServletRequest,也可以修改 HttpServletRequest 头和数据。
- 在 HttpServletResponse 到达客户端之前,拦截 HttpServletResponse。
- 根据需要检查 HttpServletResponse,也可以修改 HttpServletResponse 头和数据。
- 用户授权的 Filter: Filter 负责检查用户请求, 根据请求过滤用户非法请求。
- 日志 Filter:详细记录某些特殊的用户请求。
- 负责解码的 Filter:包括对非标准编码的请求解码。
- 能改变 XML 内容的 XSLT Filter 等。
- Filter 可负责拦截多个请求或响应;一个请求或响应也可被多个 Filter 拦截。
创建一个 Filter 只需两个步骤:
- 创建 Filter 处理类。
- web.xml 文件中配置 Filter。