- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我们正在为 80000 名用户构建一个 Spring-MVC 网络应用程序。
我在宠物诊所示例中看到很多 Controller 使用:@SessionAttribute
注释和SessionStatus status ... status.setComplete()
从 HTTP session 中存储和移除 bean。确实非常有用。
如果您计划为 80,000 名用户构建应用程序,这是最好的方法吗?如果您打算像这样存储所有表单数据,您还能使用 session 负载平衡和 session 故障转移吗?
最佳答案
它可能无法满足您的需求,不。内置实现有两个主要问题:
它并不真正支持标签式浏览。如果用户在多个浏览器选项卡中加载同一屏幕,则访问一个 Controller 的两个选项卡将破坏彼此的 session 属性数据。
如果用户不遵循您的“计划”导航路径,setComplete()
调用将被错过,对象将无限期地挂起,直到 session 过期并被清除。
第 1 项可能是问题,也可能不是问题,具体取决于您的应用的设计方式和用途。 (有些事情,例如银行,无论如何都会故意阻止多选项卡的使用)但是我认为大多数用户都希望能够在一个选项卡中编辑用户 A 的个人资料,在另一个选项卡中编辑用户 B 的个人资料,并且不会提交一个表格破坏另一个表格屏幕。
第 2 点,您可以通过始终将屏幕提交到其自己的 Controller 然后在清理后重定向来解决,但如果您还没有以这种方式构建,那将需要大量工作。
好消息是 org.springframework.web.bind.support.SessionAttributeStore
是一个公认的扩展点!您可以提供您喜欢的任何实现并将其注入(inject)您的调度程序 servlet 中。如果您想避免因业务对象而膨胀,您甚至不需要使用 Web Session 来存储信息。例如,您可以将该实际存储放在后端 terracotta 集群中,而不必担心它与您的集群策略兼容。
--
如果您真的需要真正的可伸缩性,那么总是有 Gamma 选项:将其重新设计为 RESTful 策略,首先不依赖服务器端状态:)
关于java - Spring MVC、@SessionAttribute 和可伸缩性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9491504/
我正在将 Javalin 设置为微服务,为我的 React 应用程序提供 API 端点。在本地,Javalin 在端口 7070 上运行,而 React 在端口 3000 上运行(通过带有 creat
我有一个 Spring Web 应用程序(Spring 3.2),我使用以下场景来处理编辑页面: @Controller @SessionAttributes(value = { "packet" }
我有一个 Spring-mvc 应用程序,在每个 Controller 中,我向 SessionAttributes 添加一个表单,以便在保存、删除或执行另一个获取请求时保留属性。当我尝试在另一个浏览
我正在使用 Spring MVC 3.0.5。我正在尝试学习如何使用@SessionAttributes。这是我的代码示例: @Controller @SessionAttributes("book"
如何使用 spring 框架和注释设置 session 属性? 相当于 request.getSession().setAttribute("key", "value"); 谢谢。 最佳答案 您可以
我怎样才能使 @SessionAttributes 限定在它们各自的 Controller 中,或者在过早地在 Controller 之间切换工作流时清理 @SessionAttributes? 示例
这是我的 Controller 代码:我已经将我的对象放在下面“doLogin”方法的映射中,我试图在我的“注销”函数中访问它但是当我尝试使用“map.get”获取我的 session 属性的值时我得
我正在尝试了解 Spring MVC 的架构。但是,我完全被 @SessionAttributes 的行为弄糊涂了。 请看下面的 SampleController,它是通过 SuperForm 类处理
我们正在使用最新版本的 spring。 . 我们正在使用 spring mvc 的 @Sessionattributes 在 session 范围内存储数据.. 问题是当我们使用浏览器的多个选项卡时,
我面临着一个特殊的问题。我正在学习 SpringMVC,这是我第一个使用它的应用程序项目。 当我们在 Controller 中使用@SessionAttributes注释时,如果调用任何具有与其签名中
我正在做一个简单的 Spring MVC 项目。有三个jsp页面第1页、第2页和第3页。在第1页和第2页中,我有用户表单,我想在第3页中打印两个用户的详细信息。我认为可以使用 spring mvc 注
几天来我一直在努力解决这个问题,它类似于 another question但那个答案并没有解决我的问题。 我无法从我的 Alexa 技能填充 JSON 响应的 sessionAttributes 属性
我在通过 session 保持电子邮件实时数据跨页时遇到问题我已经尝试过了 @Controller @RequestMapping(value = "/sec") @SessionAttributes
我尝试在我的 Controller 类中使用 @SessionAttributes,如下所示: @Controller @SessionAttributes({"calMethods", "taxLi
我正在使用 Spring。 每当用户登录时,我都会执行以下操作 model.addAttribute("user",user); 其中模型是对象 ModelMap model; 并将用户添加到 ses
我正在使用 2.5 并通过注释完成所有操作。 我有一个允许用户编辑对象的简单表单。它背后的 Controller 创建对象并在 GET 时将其添加到模型中,并在 POST(提交)时处理更改。它工作正常
我们正在为 80000 名用户构建一个 Spring-MVC 网络应用程序。 我在宠物诊所示例中看到很多 Controller 使用:@SessionAttribute 注释和SessionStatu
我有一个用于搜索和结果列表的抽象 Controller 支持类: @Controller @SessionAttributes("query") public abstract class Searc
我是 Node 和异步编程的新手,为了更好地理解回调,我在学习过程中尝试了所有能找到的方法。 这是 Lex 机器人与 Facebook 的集成,但我想我只是迷失在回调 hell 中。我的日志显示所有功
我最近正在尝试学习 Spring MVC。似乎我不太了解@SessionAttributes 和@ModelAttribute 注释的功能。 这是我的 Controller 的一部分: @Sessio
我是一名优秀的程序员,十分优秀!