Tag: session

如何在JSP EL中检查会话?

如何检查EL中的请求是否存在会话? 我正在尝试这样的事情: … 但似乎它永远不会是空的。

Hibernate的会话线程安全吗?

我需要知道,Hibernate的会话是否是线程安全的。 但很明显,每个线程都会附加一个新会话来执行。 但我的问题是,如果在一个线程中我更新了一个实体的某个值,那么在同一时间执行期间会反映在其他线程中吗? 我的问题是当我从两个线程顺序触发更新时,值正确更新但是当我几乎完全触发更新时它就失败了。 例如。 现阶段的表。 ID NAME MARKS ——- ——— ——– 1 John 54 我想做的是: Student student = session.load(Student.class, 1); student.setMarks(student.getMarks() + 1); session.update(student); session.close(); 当我尝试在循环中运行上面的代码(例如10)时,表“student”中的“marks”值被正确更新,即值更新为64,这是正确的。 但是当我尝试在线程环境中运行相同的代码时,它会产生错误的结果。

如何在Facelets页面中访问会话属性

我已经使用JSF和PrimeFaces实现了一个登录表单。 我在PrimeFaces展示网站上使用了这个例子 。 我有一个Facelets页面来显示dataTable。 现在我需要将上面的登录表单与此表页面集成。 所以我在LoginBean.java中添加了几行来处理会话属性。 if (username.equals(getUsername_db()) && password.equals(getPassword_db())) {//valid user and paward loggedIn = true; msg = new FacesMessage(FacesMessage.SEVERITY_INFO, “Welcome”, getUsername_db()); //new lines FacesContext context2 = FacesContext.getCurrentInstance(); HttpSession session = (HttpSession) context2.getExternalContext().getSession(true); session.setAttribute(“user”, username); //end of new lines … 如果用户没有登录,我需要隐藏dataTable中的列。现在我的问题是,如何在Facelets页面中访问会话属性?

使用Tomcat允许子域会话cookie的最佳方法

默认情况下,tomcat将为当前域创建会话cookie。 如果您在www.example.com上,您的cookie将为www.example.com创建(仅适用于www.example.com)。 而对于example.com,它将为.example.com创建(期望的行为,将适用于example.com的任何子域以及example.com本身)。 我已经看到一些Tomcat阀门似乎拦截会话cookie的创建并使用正确的.example.com域创建替换cookie,但是它们似乎都没有完美地工作,它们似乎都离开了现有的cookie并且只是创造一个新的。 这意味着每个请求都会发送两个JSESSIONID cookie。 我想知道是否有人对此问题有明确的解决方案。

如何使用JSESSIONID手动加载Java会话?

我有一个处理多部分表单post的servlet。 post实际上是由嵌入在页面中的Flash文件上传组件制作的。 在某些浏览器中,Flash生成的POST不包含JSESSIONID,这使得我无法在post期间从会话中加载某些信息。 Flash上​​传组件在特殊表单字段中包含cookie和会话信息。 使用此表单字段,我实际上可以检索JSESSIONID值。 问题是,我不知道如何使用此JSESSIONID值手动加载该特定会话。 编辑 –基于ChssPly76的解决方案,我创建了以下HttpSessionListener实现: @Override public void sessionCreated(final HttpSessionEvent se) { final HttpSession session = se.getSession(); final ServletContext context = session.getServletContext(); context.setAttribute(session.getId(), session); } @Override public void sessionDestroyed(final HttpSessionEvent se) { final HttpSession session = se.getSession(); final ServletContext context = session.getServletContext(); context.removeAttribute(session.getId()); } 这会将所有会话添加到ServletContext,作为由其唯一ID映射的属性。 我可以在上下文中放置一个会话映射,但它似乎是多余的。 请发表有关此决定的任何想法。 接下来,我将以下方法添加到我的servlet以通过id解析会话: private HttpSession getSession(final String […]

当Hibernate刷新会话时,它如何判断会话中的哪些对象是脏的?

我对Hibernate的理解是,当从DB加载对象时,它们被添加到Session中。 在不同的点上,根据您的配置,会话被刷新。 此时,修改后的对象将写入数据库。 Hibernate如何确定哪些对象“脏”并且需要编写? Hibernate生成的代理是否拦截了对字段的赋值,并将对象添加到Session中的脏列表中? 或者Hibernate是否查看Session中的每个对象并将其与对象的原始状态进行比较? 还是完全不同的东西?

访问JSP中的常量(没有scriptlet)

我有一个类定义各种会话属性的名称,例如 class Constants { public static final String ATTR_CURRENT_USER = “current.user”; } 我想在JSP中使用这些常量来测试这些属性的存在,例如: 但我似乎无法让sytax正确。 另外,为了避免在多个地方重复上面相当冗长的测试,我想将结果分配给本地(页面范围)变量,并改为引用它。 我相信我可以用做到这一点,但我再次努力找到正确的语法。 更新:继续下面的建议,我试过: 这没用。 所以相反,我尝试替换常量的字面值。 我还将常量添加到页面的内容中,因此我可以在呈现页面时validation常量的值 这很好,它在页面上打印了期望值“current.user”。 我无法解释为什么使用String文字工作,但是当两个看起来具有相同的值时,对常量的引用不会。 帮帮我…..

查找从给定客户端IP创建的活动会话数

有没有办法确定从给定客户端IP地址创建的活动会话数?

在Tomcat中支持没有Cookie的会话

我目前正在运行具有以下属性的应用程序: 基于Java的Spring和Acegi 在Tomcat上运行5 我需要能够支持没有 cookie的用户会话。 有人可以指出我正确的方向。 谢谢。

管理多个选项卡的webapp会话数据/控制器流

我有一个Java Web应用程序,它在会话中存储一些数据。 当用户与应用程序交互时,会话中的数据发生变化(例如,流程由控制器管理,每个控制器具有多个表单页面,在每个表单页面上,一些数据在会话中更新,流程转到下一个表单页面)。 问题是一些用户正在向应用程序打开多个选项卡,每个选项卡在流程中都有不同的步骤。 此时会话中的数据混乱,因为选项卡共享同一会话(应用程序使用cookie托管会话)。 告诉用户使用不同的浏览器以避免共享相同的会话ID(例如,一个Firefox窗口和一个IE窗口)不是一种选择,因为在某些时候肯定会有人忘记这样做而是使用制表符,从而弄乱他们的数据。 添加一些检测从另一个选项卡请求另一个流并向用户显示不允许这样的消息的validation不是一个选项,因为它对用户很生气而我们不希望这样做吗? :d 事实是,使用另一个选项卡对用户非常有用,因为它们在使用应用程序时更有效,所以我保留了这个选项。 但现在的问题是如何最好地管理更多标签的一个会话数据? 我想到的是让控制器在启动流时生成一个令牌,并将此令牌传递给每个表单页面,然后将其发送回标识自身。 如果另一个选项卡在有正在​​进行的流时请求相同的控制器操作,则生成另一个令牌并传递它。 基本上,我希望每个流都有一个令牌,在会话中我不仅会保留一组数据,而是为每个令牌提供一组数据,然后根据令牌匹配请求。 现在的问题是这种方法需要对应用程序进行大量的重写,我想知道是否有管理这种情况的最佳实践,或者有人可以建议其他方法。 我对这些想法持开放态度。 你遇到过这种情况吗? 你是怎么处理的呢?