Java servlet |需要过滤器

原文:https://www . geesforgeks . org/Java-servlet-需要过滤器/

通过几个例子可以理解实现过滤器的必要性。让我们以一个网络应用程序为例,该应用程序以特定的格式(例如 Excel)格式化要呈现给客户端的数据。但是,在稍后的时间点,客户端可能需要其他格式的数据,例如超文本标记语言(HTML)可移植文档格式(PDF)或 Word。在这种情况下,可以创建一个过滤器,以所需的格式动态转换数据,而不是每次都修改代码来更改数据的格式。

让我们考虑另一个例子,开发人员创建一个 Web 应用程序,其中 servlet 处理用户登录。这意味着当用户提交他的凭证时,servlet 根据用户信息验证凭证。serviet 还为用户创建了一个会话,因此应用程序中的其他组件也可以使用用户的会话详细信息。稍后,开发人员可能需要在应用服务器的日志系统中为每个用户的登录尝试维护一个登录条目。为了实现这一点,开发人员需要更改现有的代码或向 servlet 添加额外的代码,并重新部署网络应用程序。

在这种情况下,servlet 除了实现其主要目标(接受请求并向客户端发送响应)之外,还必须实现其他功能。这个额外的 lo servlet 降低了应用程序的效率。为了克服这个问题,引入了过滤器来实现这些附加功能,例如验证登录凭证,在数据库中维护服务器日志。过滤器最显著的特点之一是,还可以在其他网络应用程序中重用。

可以使用过滤器的一些情况和任务如下:

  • 安全验证
  • 会话验证
  • 日志记录操作
  • 国际化
  • 触发资源访问事件
  • 图像转换
  • 缩放地图
  • 数据压缩
  • 加密
  • 标记化
  • Mime 类型更改
  • XML 响应的缓存和 XSL 转换
  • 排除故障

详细说明一些需要过滤器的情况:

  • 修改请求字符加密:目前,一些浏览器不在协议请求的内容类型头中发送字符加密数据。如果购物者的请求中没有这样的加密技术,那么仪器将使用默认的加密技术来分析请求参数。如果购物者没有设置字符加密,并且请求参数区域单元用不同于默认的特殊加密编码,则参数解析不正确。您将能够在 ServletRequest 接口中使用 setCharacterEncoding 策略来排列密码。因为这种技术在解析任何帖子知识或从请求中读取任何输入之前应该是已知的,所以这种执行可能是过滤器的主要应用。
  • 减小响应的大小:修改响应的过滤器的另一个例子是包含在 Tomcat servlet 引擎分发的示例中的压缩过滤器。尽管高速网络连接越来越普遍,但仍然需要有效地使用信息测量。压缩过滤器很方便,因为您可以将它附加到任何 servlet 上,以减少响应的规模。