2012-05-16 49 views
0

我正在使用struts 1(在传统项目上执行维护任务)。该应用程序分层在ActionClasses调用管理器类和管理器类实例化和使用DAO层类我必须编写条件逻辑,其中基于会话变量,我希望DAO层在不同的DB2模式之间切换。Struts 1:我如何在DAO层获取会话变量

如何阅读DAO java类中的会话? 一个显而易见的方法是重构经理/ DAO类构造函数都是通过在Struts 2调用链

沿着会话变量传递,我们使用ActionContext.getContext().getSession();

有类似的东西,我可以在支柱1吗?

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

我工作的这个代码库,用于原型更新的业务逻辑。这是一个继承的代码,在2003 - 2004年写回。在原型设计之后,这些代码将不会被直接用于回收站。

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

但我的问题是,是否有访问会话中DAO在struts框架1(过滤器/黑客?)

+1

为什么你不只是传递一个你需要的值的变量? –

+1

DAO层不应该访问上下文信息,例如HTTP会话,因为Paul评论说它应该是一个很好的选择,可以将此值作为参数传递给您的dao方法 –

+0

我现在正在传递变量,但有100多个类需要重构。这就是为什么我发布了这个问题,如果有办法在DAO中获取会话,那样我可以限制对DAO的更改,而不是重构链中的所有类。 – Satish

回答

1

最简单的方法是在本地创建一个线程,也许将其设置在过滤器或简单定制的请求处理器中,通过静态方法访问。我觉得很肮脏。

0

你不这样做的一种方式。你将在未来面临巨大的麻烦。相反,通过调用链传递值。

+0

编辑上面的问题,在我的原型后,没有未来,代码直接回收站。有一个更好的“Spring”版本已经在开发中。 – Satish

+0

好的。我已经听过这么多次了,反正我总是以正确的方式去做。让我心痛。 ymmv –

+0

+1“好的,我已经听过这么多次了,反正我总是这样做” –

相关问题