相关疑难解决方法(0)

如何在浏览器标签中区分会话?

在使用JSP和Servlets在java中实现的Web应用程序中; 如果我在用户会话中存储信息,则从同一浏览器的所有选项卡共享此信息.如何在浏览器选项卡中区分会话?在这个例子中:

<%@page language="java"%>
<%
String user = request.getParameter("user");
user = (user == null ? (String)session.getAttribute("SESSIONS_USER") : user);
session.setAttribute("SESSIONS_USER",user);
%>
<html><head></head><body>
<%=user %>
<form method="post">
User:<input name="user" value="">
<input type="submit" value="send">
</form>
</body></html>
Run Code Online (Sandbox Code Playgroud)

将此代码复制到jsp页面(testpage.jsp)中,将此文件部署在服务器上的Web应用程序的现有上下文中(我使用Apache Tomcat),然后使用正确的URL(localhost/context1/testpage.jsp)打开浏览器(FF,IE7或Opera ),键入您在输入中的姓名并提交表格.然后在同一浏览器中打开一个新选项卡,然后您可以在新选项卡上看到您的名称(从会话中获取).小心浏览器缓存,有时似乎不会发生,但它在缓存中,刷新第二个选项卡.

谢谢.

browser jsp servlets web-applications sessionid

130
推荐指数
8
解决办法
24万
查看次数

如何检测用户是否为同一会话打开两个选项卡?

我已经完成了使用CakePHP完成的预订申请,该申请涉及结账页面前的几个步骤.在这些步骤之间,我将信息存储在会话中.

它是如何工作的,第1步要求他们填写他们的信息.转到步骤2时,步骤1中的信息将保存到会话对象中.当他们继续进行其他步骤时,重复该过程.结账时,所有数据都会保存到数据库中.

如果用户在浏览器中打开一个应用程序实例,那么一切都很有效.但是一旦他们在同一浏览器中为同一个应用程序打开了另一个页面或另一个选项卡,就会出现问题.

假设他们在选项卡A和选项卡B中打开了两个应用程序实例.在选项卡A中,他们在步骤1中输入了详细信息,然后继续执行步骤2.然后用户在选项卡B中执行相同的操作.

在用户执行结帐时的最后一步,选项卡A中的信息与选项卡B中的信息相同.

现在,我只能认为最好的方法是阻止用户在两个浏览器实例中打开相同的应用程序.

当他们尝试在标签B中打开另一个实例时,有没有办法检测并提示用户先在标签A中完成预订表格?

php session tabs

18
推荐指数
1
解决办法
3万
查看次数

标签 统计

browser ×1

jsp ×1

php ×1

servlets ×1

session ×1

sessionid ×1

tabs ×1

web-applications ×1