0

我真的很喜欢函数式编程,我喜欢它的不变性概念,而且它对函数没有副作用的概念。

我正在尝试将其中一些概念带入 java。

现在我有某种接收请求的 servlet,如果浏览器没有向服务器发送 cookie,那么我想创建一个具有特定路径的 cookie 给用户。

现在在 servlet 内部,我不想保留该逻辑,因为它对多个 servlet 是通用的。所以我将它提取到某种 cookie 管理器中,它会做到这一点:

CookieManager.java.handleCookies(请求,响应)

  1. 检查浏览器是否发送了cookie。
  2. 如果未使用具有特定路径的新会话 cookie 值设置 cookie。

但是我不喜欢它,因为现在 servlet 将调用 CookieManager.java.handleCookie 会产生副作用'正在传递给它。

任何人都可以提出一个既优雅又无副作用且性能出色的解决方案?

谢谢

4

2 回答 2

1

您可以使用 servlet 过滤器。这将非常适合您的情况。您可以将过滤器映射到 URL 模式并在 dofilter 方法中编写代码。如果您想对请求/响应进行前后处理,建议使用过滤器。由于您正在为您的请求进行预处理,因此它适合您的情况。If 也是松耦合的,因为您可以随时删除、修改或添加其他规则,而无需修改核心 servlet 代码。

于 2012-08-29T13:51:33.730 回答
0

一个好的解决方案是使用创建一个 servlet,它将充当所有其他 servlet 的父类。现在在这个 servlet 中,将这个 cookie 处理逻辑放在一个通用函数中,比如 handlecookie。在此 servlet 的 get 和 post API 中,首先调用此 handleCookie,然后调用 servlet 的服务 API(保持为空)

在所有子 servlet 类中,您只能覆盖从父类继承的服务类,并且对您来说应该可以正常工作

Servlet 过滤器是您可以使用的其他解决方案。

于 2012-08-29T13:52:12.823 回答