我们可以使用过滤器代替 Servlet 吗?

Posted

技术标签:

【中文标题】我们可以使用过滤器代替 Servlet 吗?【英文标题】:Can we use Filter instead of Servlet? 【发布时间】:2013-09-04 17:32:10 【问题描述】:

过滤器(不使用 servlet)能否处理传入请求?

【问题讨论】:

【参考方案1】:

过滤器用于修改请求或响应的标头和/或内容。我从未见过它们用于创建响应本身,我认为它们不能用于此,因为它们需要与实际资源“链接”。来自Java EE 6 tutorial:

过滤器是一个可以转换标题和内容的对象(或 两者)的请求或响应。过滤器与 Web 组件的不同之处在于 过滤器通常不会自己产生响应。相反,一个 过滤器提供可以“附加”到任何类型的功能 网络资源。

【讨论】:

【参考方案2】:

过滤器有广泛的用途; Servlet 2.3 规范建议以下用途:

身份验证过滤器 日志记录和审核过滤器 图像转换滤镜 数据压缩过滤器 加密过滤器 标记过滤器 触发资源访问事件的过滤器 转换 XML 内容的 XSL/T 过滤器 MIME 类型的链式过滤器

如果您想根据特定条件过滤和/或修改请求,请使用Filter。 如果您想控制、预处理和/或后处理请求,请使用Servlet

过滤器最适合授权,因为它可以配置为针对站点的所有页面运行。因此,您只需要一个过滤器来保护您的所有页面。

有用的链接:

    filter tutorial filter in detail referred answer

【讨论】:

以上是关于我们可以使用过滤器代替 Servlet 吗?的主要内容,如果未能解决你的问题,请参考以下文章

我可以在 Spring Boot 中将 Jersey 用作 servlet 和过滤器吗?

servlet中过滤器的好处是啥? [复制]

Global Java Servlet Filter,有可能吗?

如何在 Jetty 中的 /* 上映射 servlet 过滤器?

用于防止滥用的 Servlet 过滤器? (DoS、垃圾邮件等)

除了在 web.xml 中声明过滤器之外,还有啥方法可以指定过滤器的顺序吗?