如何在具有路径的java中创建会话cookie,同时仍然具有良好的函数式编程编程实践

时间:2012-08-29 13:42:32

标签: java functional-programming immutability

我非常喜欢函数式编程,我喜欢它的不变性概念,也没有函数的副作用概念。

我正在尝试将这些概念纳入java。

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

现在在servlet中我不想持有那个逻辑,因为它对多个servlet是通用的。 所以我把它提取到某种cookie管理器中,这样就可以了:

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

  1. 检查浏览器是否发送了cookie。
  2. 如果没有使用特定路径设置具有新会话cookie值的cookie。
  3. 然而我不喜欢它,因为现在servlet将调用CookieManager.java.handleCookie会产生副作用我宁愿它返回某种响应并进一步在我的servlet中使用它而不会影响它我正在传入的参数。

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

    感谢

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

在子servlet类中,你只能覆盖从父类继承的服务类,事情应该可以正常工作

Servlet filters是您可以使用的其他解决方案。