如何使用path在java中创建会话cookie,同时仍具有良好的函数式编程实践
我非常喜欢函数式编程,我喜欢它的不变性概念,也喜欢它对函数没有副作用的概念
我正试图将其中一些概念引入java
现在我有了一个servlet,它接收一个请求,如果浏览器没有向服务器发送cookie,那么我想创建一个cookie,并向用户发送特定路径
现在在servlet内部,我不想保留这种逻辑,因为它对于多个servlet是通用的。 因此,我将其提取到某种cookie管理器中,该管理器将执行以下操作:
库克经理。JAVA手册(请求、响应)
- 检查浏览器是否发送了cookie李>
- 如果未设置cookie,则使用特定路径的新会话cookie值设置cookie李>
但是我不喜欢它,因为现在servlet将调用CookieManager。JAVAhandleCookie将有一个副作用,我希望它返回某种响应,并在servlet中进一步使用它,而不是影响我传递给它的参数
任何人都可以提出一个既美观、无副作用又性能优异的解决方案
谢谢
# 1 楼答案
一个好的解决方案是创建一个servlet,它将充当所有其他servlet的父类。 现在在这个servlet中,将cookie处理的逻辑放在一个公共函数中,比如handlecookie。 在这个servlet的get和post API中,首先调用这个handleCookie,然后调用servlet的服务API(保持为空)
在所有子servlet类中,您只能重写从父类继承的服务类,并且应该可以正常工作
Servlet filters是您可以利用的其他解决方案
# 2 楼答案
您可以使用servlet过滤器。这很适合你的情况。您可以将过滤器映射到URL模式,并在dofilter方法中编写代码。如果您想在请求/响应之前和之后进行过滤,建议使用过滤器。由于您正在为您的请求进行预处理,因此它将适合您的情况。If也是松散耦合的,因为您可以随时删除、修改或添加另一个规则,而无需修改核心servlet代码