- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
根据this blog JSF 正在走向无状态。使用 JSF 的全部意义不在于它使保存和恢复状态成为一件苦差事。 JSF 成为无状态的有什么意义?您能否提供一个有用的示例。
最佳答案
首先,我想澄清 JSF 本身并不是完全“无状态”。 JSF 只是添加了一项新功能,使开发人员能够按需创建无状态 View /表单。
状态保存在动态操作的表单中特别有用,例如有条件的 ajax 渲染部分。它在基于 ajax 的回发中记住表单的状态。换句话说,在这些表单中,您绝对需要一个 View 范围的托管 bean,而不是请求范围的托管 bean。在静态表单绑定(bind)到请求范围 bean 的情况下,可以根据 View 文件在每个请求的基础上轻松地重新创建状态,因此不一定需要保存。
在服务器端状态保存管理的情况下,状态保存具有服务器内存和 session 创建方面的成本。此外,它还有一个额外的缺点,即 ViewExpiredException
将在 session 过期时的回发期间发生。所有这些都可以通过将状态保存管理设置为客户端来解决。但这反过来又会在网络带宽和由于序列化导致的性能下降方面付出代价。
例如,在大型网站覆盖“公共(public)”和“受限”部分的情况下,您希望将 session 创建推迟到用户实际登录。但是,如果您在公共(public)部分有一个 JSF 登录表单,那么 session 仍将通过访问该页面来创建。如果表单本身基本上没有动态状态并且绑定(bind)到请求范围的 bean,那么这是不必要的成本。
诚然,如果您拥有最先进的硬件,这个成本可以忽略不计,但如果您有相对较多的访问者和/或相对较差的硬件,它就不可忽略。在这种情况下,测量就是知道。此外,完全无状态并不总是可能的,您将失去动态操作 View /表单的好处和体验。但是,理论上您可以通过摆弄隐藏的输入字段和/或自定义请求参数来维护每个请求的状态。
应该注意的是,无状态还有一个额外的缺点,即如果存在开放的 XSS 漏洞,理论上更容易执行 CSRF 攻击。幸运的是,使用 JSF2/Facelets 已经很难有 XSS 漏洞了。获得它的唯一方法是使用 <h:outputText escape="false">
重新显示用户控制的数据。
也可以看看:
关于jsf - JSF 中无状态的用处是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14890995/
我正在阅读有关 Edit Distance between 2 strings 的问题。 它可以使用编辑距离的公式通过动态规划来解决。我无法理解的是它的用处。首先,这与知道 2 个字符串的最长公共(p
我是一名优秀的程序员,十分优秀!