【问题标题】:Stateless Spring MVC无状态 Spring MVC
【发布时间】:2012-01-01 17:29:34
【问题描述】:

我目前正在阅读 Spring in Action 第 3 版,并且一直在尝试使用 Spring MVC。 一切正常,直到我尝试将我的示例 web 应用程序“移植”到无状态 web 应用程序。

为了确定是否创建了会话对象,我在 /* URL 映射上放置了一个调试 servlet 过滤器,它只打印出 req.getSession(false),并继续该链。

我尝试更改我所有控制器的范围以请求天真,但当然,会话仍然是在将模型绑定到表单的页面/控制器上创建的。 我想知道如何实现无状态 Spring MVC ?到目前为止,我没有关于这个问题的教程。

【问题讨论】:

  • 为什么重要?如果会话中没有存储任何内容,那么实际上重要的状态很少或根本没有。您是否正在尝试解决特定问题?
  • @Dave Newton:不,这不是一个具体问题。我只是对如何使书中的简单示例完全无状态的想法感到好奇,我阅读的它可以更容易聚集。
  • 如果会话中没有任何内容,则复制无关紧要,除了轻微(可能非常)性能损失。不过,根据我的经验,这是一款罕见的完全无状态的应用。
  • @Dave Newton:我想我现在明白了。谢谢!

标签: spring spring-mvc


【解决方案1】:

确保所有 JSP 都使用

<%@page session="false" %>

否则将在执行 JSP 后立即创建会话。

【讨论】:

【解决方案2】:

意外的会话创建是 Spring Security 中最常见的无效错误报告来源之一(因此您在上面的评论中链接到了常见问题解答)。

如果您在创建会话时遇到问题,Spring Security 的debugging filter 会很有用。它会在创建会话时自动记录一条消息,并通过堆栈跟踪指示它发生的位置。它还提供了其他有用的信息,输出比标准日志条目更具人类可读性,因此在开发环境中很有用。如果你使用 Spring Security 的命名空间支持,你只需要添加元素

<debug />

到你的配置。

【讨论】:

  • 谢谢!再见了我的会话调试 servlet-filter :)
猜你喜欢
  • 2010-11-27
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多