2016-05-27 150 views
0

我在我的web应用程序中遇到了http会话的问题。我使用glassfish服务器作为Web服务器。在Java Web应用程序中共享相同的会话

我的问题是,我不能在我的web应用程序中共享同一个会话。否则,我在HomePage.jsp中创建了一个会话,并且当我转到任何servlet并尝试将数据添加到此会话时,它将返回null或创建一个新会话。

我知道在运行任何Web应用程序时创建的会话会生成一个默认会话,并且可以在整个此Web应用程序中使用。但在这种情况下,我不知道为什么这会发生在我身上。

请任何人都可以帮助我,告诉我如何解决它。 最好的问候:)

+0

共享会话可能会导致各种安全问题。你究竟在尝试在会话之间分享什么?也许你可以实现某种缓存机制,并通过那里分享你的数据。 – npinti

+0

会话实际上是在同一个Web应用程序中的JSP页面和servlet之间共享的。你在浏览器中启用cookie吗?您是否在JSP页面上获得相同的会话?你使用什么代码来获得servlet中的会话?向我们展示更多代码 – AhmadWabbi

+0

这是我在HomePage.jsp中使用的代码(这是我运行项目时显示的第一个页面)if(session == request.getSession(false)){ System.out.println( “session alerady Exist:”+ session.getId()); } else { session = request.getSession(true);我使用HttpSession会话= request.getSession();字符串用户名= request.getParameter(“用户名”); session.setAttribute( “用户名”,用户名); –

回答

0

在JSP页面中,如果你在page指令指定属性session=true,你将有一个变量,名为session,将自动获得价值。如果不指定它,则必须通过调用request.getSession();明确地获取JSP页面中的会话。在servlet中,没有automatique session变量。您必须在servlet中访问像这样的会话:

request.getSession().setAttribute("UserName",UserName); 
+0

你好,是的,我像你说的那样做。但是request.getsession()创建一个新的会话并且不使用现有的会话。我不知道为什么会发生这种情况。这不是我的第一个项目,我总是和你刚才提到的一样工作......所以我很困惑:( –

+0

你是在手工操作cookies吗?你上面说过:“另外我用cookies来存储数据从homePage中启用cookie“我认为你搞乱了cookie,这就是为什么你放弃了会话跟踪到达JSP页面和servlet的cookies可能你在cookies中引入了一个小的语法问题一般来说(cookie)= cookie [cookie cookie] = cookie [cookie1 = cookies]如果你的cookie不存在,那么你松开会话时忘记cookie。 – AhmadWabbi

+0

yes即时操作cookie。 (); cookie1.setMaxAge(60 * 60 * 24 * 365 * 10); cookie1.setPath(“/”); if(cookie1.getName()。 response.addCookie(cookie1); foundCookie = true; }} if(!foundCookie){Cookie cookie1 = new Cookie(“EsitimatedP V“,Valueee); cookie1.setMaxAge(60 * 60 * 24 * 365 * 10); cookie1.setPath(“/”); response.addCookie(COOKIE1); } –

相关问题