我们可以使用过滤器代替 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 和过滤器吗?
Global Java Servlet Filter,有可能吗?
如何在 Jetty 中的 /* 上映射 servlet 过滤器?