过滤器不是 servlet。过滤器是我们在幕后、servlet 后面做的事情。过滤器不是前端或表示层任务,而是管理员任务。此外,过滤器是请求的预处理器和响应的后处理器。
作为数据处理,过滤器允许对数据进行修改、更改、加密、解密和压缩。在与该过滤器关联的 servlet 或 JSP 页面运行之前,这些过滤器作为程序在服务器上运行。
我们在哪里使用过滤器?
我们不应该在核心业务servlet中编写敏感代码,而应该将敏感代码编写到过滤器中。用户可以调用servlet,但不能调用filter。然后,servlet 的开发人员可以决定哪个过滤器将在 servlet 之前执行。
在应用程序中,如果我们向服务器发送大图像,则需要花费更多时间,因为必须发布图像,之后服务器将收到图像。一旦我们请求该页面,该页面就必须转到目标。
在此期间,我们无法在任何地方阻止它。过滤器是一项允许我们在提交表单后执行某些操作的规定。我们可以使用过滤器来压缩发布的图像和服务器接收的图像之间的图像。在请求之间使用过滤器,直到请求到达目标。
我们可以在许多不同的方面使用过滤器,如下所列:
- 数据加密与解密
- 用于存储每个用户的 IP 地址的过滤器
- 字符串替换
- 数据和字符串的串联
- 登记表验证
- 图像转换
登录身份验证:我们永远不应该在 servlet 中编写登录代码,因为如果该脚本被泄露,黑客就会了解我们如何检查密码,并可以轻松地使用 SQL 注入来泄露整个代码。
过滤器的优点
可重复使用的
过滤器可重复使用。考虑这样的场景:20 个不同的 servlet 和 JSP 正在向服务器提交图像。在这种情况下,程序员可以创建单个图像压缩过滤器。我们可以在所有 20 个 servlet 和 JSP 中使用这个过滤器。
代码分离
过滤器允许我们将业务逻辑与表示层分开。这在 JSP 中特别有用,因为程序员希望将全部注意力集中在表示层上。我们可以在过滤器中编写业务逻辑,而不是在 servlet 或 JSP 中编写业务逻辑。我们可以将此过滤器应用于任何表示层代码。
批发变化
过滤器允许您对现有资源进行批量更改。考虑您更改网站图像文件夹位置的情况。现在,您可以创建一个简单的字符串替换过滤器并将其应用到所有包含图像的 servlet 和 JSP。
过滤器链接
该过滤器永远不会到达最终用户并在后台运行。我们还可以有多个过滤器,一个用于登录,另一个用于图像压缩等。
例如,当你去机场时,有很多安检门。有人会检查你的护照,有人会检查你的行李——以同样的方式,在你使用 servlet 之前将所有这些都视为过滤器。
过滤类型
我们有两种过滤方式:
请求过滤器
考虑到我们需要记下访问我们网站的每个用户的 IP 地址。为此,我们可以编写一个过滤器。该过滤器将在 servlet 之前执行。我们不在 servlet 中编写此类代码,因为此任务是管理任务。
响应过滤器
有时,我们想要处理响应数据。服务器给出了不同的响应,但用户得到了过滤器处理的不同响应。过滤器是对请求和响应中的数据的一种处理。