jsf - GlassFish 正在为每个请求创建一个新的 JSESSIONID
问题描述
我有一个由命名 bean 支持的简单页面。该页面也使用primefaces,但我没有在该页面中做任何ajax。这些应用程序托管在 Glassfish 5.1 上。
@Named("cardsView")
@RequestScoped
public class CardsViewBean implements Serializable {
...
}
这是 xhtml 页面。如您所见,我将 bean 传递给主 xhtml,不确定这是最佳实践还是问题的根源。
<ui:composition template="/fragment/master.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:ipc="http://java.sun.com/jsf/composite/component">
<ui:param name="bean" value="${cardView}" />
<ui:define name="content">
.....
</ui:define>
</ui:composition>
据我了解,请求范围的 bean 只为请求而存在。
但是,当我查看浏览器检查器时,我可以看到每次点击页面时都会创建一个新的 JSESSIONID。所以我认为显然有一些东西我配置错误,但我不知道在哪里看。
解决方案
实际上,每页有 2 个请求。初始请求和回发请求。首先,客户端发出获取页面的请求。它本身就是完整的请求。请求:http ://example.com/index
响应:html 页面。用户点击提交按钮或另一个按钮或链接后,浏览器再次请求另一个页面。请求:http ://example.com/login
响应:另一个页面。换句话说,Jsf 或任何 Ui 框架通过各种技术和方法为我们保存 2 个请求之间的信息,请参阅这个关于 Initial request and postback request
和Jsf生命周期
和primeFaces lifeCycle 展示案例的问题
最后一点:会话在 jservlet 中超时,您可以使用 web.xml 对其进行配置,如果此时间过去,您的会话将过期并为您提供另一个会话快乐编码!
推荐阅读
- css - 带有文本溢出省略号的非常长标签的按钮的最大宽度为 700 像素,但如果视口变小应该缩小,不知道
- python - 创建 3x3 matplotlib 子图,但在某些位置缺少图
- .net - dot net 应用程序未构建。找不到错误包
- php - TCPDF:为什么多单元格的位置是从另一个元素继承的?
- javascript - Keystonejs 5:在创建管理员中自动填充父级
- c - 如何使用共享头文件和代码文件构建 C(嵌入式)项目
- sql - 重置前根据增加的列值选择最后一行?
- python - 在python中模拟线程模块
- linked-list - 从未排序的链表中删除重复项 ::为什么此代码显示分段错误
- python - 从 Pandas 时间戳列中提取年/月并将其存储在两个新列中