繁体   English   中英

如何在具有路径的Java中创建会话cookie,同时仍具有函数式编程的良好编程习惯

[英]How to create a session cookie in java with path while still having good programming practice of functional programming

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

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

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

现在在servlet内部,我不想保留该逻辑,因为它对于多个servlet都是通用的。 所以我将其提取到某种cookie管理器中,它将执行以下操作:

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

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

但是我不喜欢它,因为现在servlet将调用CookieManager.java.handleCookie会有副作用,我希望它返回某种响应,并在我的servlet中进一步使用它,因为它会影响它的参数,正在传递给它。

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

谢谢

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

一个好的解决方案是使用create servlet,该servlet充当所有其他servlet的父类。 现在,在该Servlet中,将cookie处理的逻辑放在一个通用函数中,例如handlecookie。 在此Servlet的获取和发布API中,首先调用此handleCookie,然后再调用Servlet的服务API(保持为空)

在所有子servlet类中,您只能覆盖从父类继承的服务类,一切对您来说都应该很好

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM