Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Struts 1:如何在DAO层中获取会话变量_Java_Struts 1_Struts1 - Fatal编程技术网

Java Struts 1:如何在DAO层中获取会话变量

Java Struts 1:如何在DAO层中获取会话变量,java,struts-1,struts1,Java,Struts 1,Struts1,我使用的是Struts1(遗留项目的维护任务)。应用程序在ActionClass中分层,调用管理器类,管理器类实例化并使用DAO层类/ 我必须编写条件逻辑,其中基于会话变量,我希望DAO层在不同的DB2模式之间切换 如何读取DAO java类中的会话? 一种明显的方法是重构manager/dao类构造函数,以便在整个调用链中传递会话变量 在struts 2中,我们使用ActionContext.getContext().getSession() 在struts 1中有类似的功能吗 ---为所有纯

我使用的是Struts1(遗留项目的维护任务)。应用程序在ActionClass中分层,调用管理器类,管理器类实例化并使用DAO层类/

我必须编写条件逻辑,其中基于会话变量,我希望DAO层在不同的DB2模式之间切换

如何读取DAO java类中的会话? 一种明显的方法是重构manager/dao类构造函数,以便在整个调用链中传递会话变量

在struts 2中,我们使用
ActionContext.getContext().getSession()

在struts 1中有类似的功能吗

---为所有纯粹主义者(包括我)编辑-------------

我正在开发这个代码库,用于原型化更新的业务逻辑。这是一段从2003年到2004年继承、编写的代码。在原型化之后,这个代码将根本不被使用,直接进入回收站

我知道DAO不需要访问HTTP会话,这就是我在编写代码时遵循的原则


但我的问题是,在struts 1框架中有没有一种方法可以访问DAO中的会话(过滤器/黑客?

您不需要这样做。将来你将面临巨大的头痛。相反,通过调用链传递值。

最简单的方法是使用本地线程,可以在筛选器或简单定制的请求处理器中设置,通过静态方法访问。我觉得很脏。

为什么不传递一个带有所需值的变量呢?DAO层不应该访问上下文信息,如Paul所说的HTTP会话。将此值作为参数传递给DAO方法应该是一个不错的选择。我现在传递变量,但有100多个类需要重构。这就是为什么我发布了这个问题,如果有一种方法可以在DAO中获取会话,那么我可以限制对DAO的更改,而不是重构链中的所有类。这样的设计怎么会被认为是“分层的”?如果您不打算保持层之间的边界,为什么不将所有内容都转储到一个monster servlet中并完成它呢?一个好的重构IDE很快就能实现。您的持久层中是否真的有100多个类,都依赖于会话?等等,你说的是Struts1。现在我明白了。在一个紧迫的最后期限内,我上一次接触继承的代码是在2004年。我理解更好的分层体系结构的概念,但在现实世界中,遇到需要修复的继承代码并不常见。上面编辑的问题,在我的原型设计之后,没有未来,代码将直接进入回收站。有一个更好的基于Spring的版本正在开发中。我已经听过很多次了,不管怎样,我总是用正确的方式去做。救了我的心痛。ymmv+1“好的,我已经听过很多次了,不管怎样,我总是用正确的方式做”