gpt4 book ai didi

java - 用于管理不同 Controller 在http session 中设置/修改/使用的信息的设计模式?

转载 作者:行者123 更新时间:2023-11-30 04:40:05 25 4
gpt4 key购买 nike

解决这个“问题”的常用方法(或设计模式)是什么:

  1. 我在 Web 应用程序中有很多 Controller (struts 操作在准确地说是 JAVA)。
  2. 某些 Controller 会在用户 session 中设置变量。
  3. 一些 Controller 使用这些变量,删除它们,修改它们,等等...

这很困惑,因为很难知道谁设置了什么,在什么条件下,在哪里改变......

我应该使用中介者模式吗: http://en.wikipedia.org/wiki/Mediator_pattern

或者像这样的外观模式(c# 中的示例): http://foxsys.blogspot.ca/2007/01/session-facade-aspnet-c.html

还是别的什么?

<小时/>

变量工作流程示例以及它如何变得困惑:

  1. 用户选择了首选产品。 ChooseProductController 在 session 中设置首选产品的 id

  2. 用户创建帐户:CreateAccountController 检查首选产品是否处于 session 中。如果是这种情况,它会使用此 id 在数据库中创建帐户

  3. 用户已登录。LoginController 检查首选产品是否处于 session 中。如果与创建帐户时数据库中的不同, View 需要显示一条消息,要求用户选择首选产品。

最佳答案

第一个建议:尽可能少地使用 session 。尝试仅将其用于生命周期与 session 生命周期相同且无法轻松或足够快地从数据库检索的事物。

第二个建议:不要直接使用 session 。将 session 的访问封装在一个或几个专用类中(就像对数据库所做的那样,但 session 是内存数据库)。而不是做

Product preferredProduct = (Product) session.getAttribute("preferredProduct");

,做类似的事情

SessionStore.getInstance(session).getPreferredProduct();

这更具可读性,更不容易出错,并且可以在所有代码库中轻松找到获取或设置首选产品的位置。

关于java - 用于管理不同 Controller 在http session 中设置/修改/使用的信息的设计模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12502663/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com