我正在尝试学习jsf,我读到的是它是一个有状态的Web框架。但是,如果我没有使用jsf并且只使用servlet,我可以使用会话范围实现这种状态。那么,一个有钱的网络框架是什么意思?那个requet范围和会话范围都是相同的(有状态的)?
答案 0 :(得分:1)
那个反叛范围和会话范围是否相同(有状态)?
这是错误的。 <{1}}和@RequestScoped
既不相同,也不同时有效。
@SessionScoped
bean是无状态的。这里没有任何内容存储超过1个请求的持续时间。有一个@RequestScoped
bean池,可以重复使用,并在不同用户之间共享。只有在请求本身包含所有必要信息时才可以这样做。
@RequestScoped
bean是有状态的。它与某个用户(会话)相关联,无法共享。它将被存储为多个请求,并且可以保持状态(因此是有状态的)。
“有状态”和“无状态”有许多不同的定义,但您可以将两个范围的属性作为无状态和状态完整的示例。
但即使仅使用@SessionScoped
bean,由于JSF在内部的工作原理,您的JSF应用程序可能也不是完全无状态的。新的JSF 2.2向无国籍迈出了一步。有关如何使用JSF完全无状态的详细信息,请参阅this explanation。
但请记住,在许多情况下,有状态(或非无状态)都没有问题,并且并非所有无状态应用程序在定义上都优于有状态应用程序。