如何使用path在java中创建会话cookie,同时仍具有良好的函数式编程实践
我非常喜欢函数式编程,我喜欢它的不变性概念,也喜欢它对函数没有副作用的概念 我正试图将其中一些概念引入java 现在我有了一个servlet,它接收一个请求,如果浏览器没有向服务器发送cookie,那么我想创建一个cookie,并向用户发送特定路径 现在在servlet内部,我不想保留这种逻辑,因为它对于多个servlet是通用的。 因此,我将其提取到某种cookie管理器中,该管理器将执行以下操作: CookieManager.java.handleCookies(请求、响应)如何使用path在java中创建会话cookie,同时仍具有良好的函数式编程实践,java,functional-programming,immutability,Java,Functional Programming,Immutability,我非常喜欢函数式编程,我喜欢它的不变性概念,也喜欢它对函数没有副作用的概念 我正试图将其中一些概念引入java 现在我有了一个servlet,它接收一个请求,如果浏览器没有向服务器发送cookie,那么我想创建一个cookie,并向用户发送特定路径 现在在servlet内部,我不想保留这种逻辑,因为它对于多个servlet是通用的。 因此,我将其提取到某种cookie管理器中,该管理器将执行以下操作: CookieManager.java.handleCookies(请求、响应) 检查浏览器是否
谢谢您可以使用servlet过滤器。这很适合你的情况。您可以将过滤器映射到URL模式,并在dofilter方法中编写代码。如果您希望请求/响应的预处理和后处理,建议使用过滤器。因为您正在为您的请求进行预处理,所以它将适合您的情况。If也是松散耦合的,因为您可以随时删除它、修改它或添加另一个规则,而无需修改核心servlet代码。一个好的解决方案是使用创建一个servlet,它将充当所有其他servlet的父类。 现在在这个servlet中,将cookie处理逻辑放在一个公共函数中,比如handlecookie。 在这个servlet的get和post API中,首先调用这个handleCookie,然后调用servlet的服务API(保持为空) 在所有子servlet类中,您只能重写从父类继承的服务类,并且应该可以正常工作
是您可以使用的其他解决方案。您是否希望
CookieManager
只检查请求中是否存在给定的cookie,并根据结果在servlet中采取行动?完全正确!我希望它是这样的,但是这会在调用者内部强加更多的代码!那么这是我唯一的选择吗?如果我使用的是functional immutable,那么我的客户端代码会更厚:(?请原谅我的无知,但所谓函数不可变,您是指CookieManager
将具有的任何状态吗?这意味着CookieManager将更改参数,就像有人调用其方法handleCookie一样,如果不存在,它将实际更改响应参数,使其具有会话id。实际上不存在。Cooki内部不会发生任何更改eManager
。您将传递一个要检测的cookie字符串并请求对象。CookieManager
将根据请求中是否存在该cookie而简单地返回true/false
。将cookie实际设置为响应将由Servlet处理。