【问题标题】:Setting session in JSP and getting session in servlet在 JSP 中设置会话并在 servlet 中获取会话
【发布时间】:2013-07-16 01:16:42
【问题描述】:

我在 JSP 代码中设置一个会话属性,如下所示,并将 HTTP 表单提交给 servlet:

session.setAttribute("qnaInfo", qnaInfo);
System.out.println("session.getAttribute" + session.getAttribute("qnaInfo"));

我正在尝试在 servlet 代码中获取会话属性,如下所示:

HttpSession session = request.getSession(true);
AuthQnAInfo storedQnaInfo = (AuthQnAInfo) session.getAttribute("qnaInfo");

在 servlet 中,它仅在 IE 上为空。但在 Chrome 中,我得到了价值。
请帮助解决这个问题。

【问题讨论】:

  • IE 可能被配置为拒绝 cookie。
  • 您好,感谢您的回复。我在 Internet Explorer 中启用了 cookie。在阻止 cookie 的级别为中之前,我将其设为低,即使在 IE 中我也可以在我的 servlet 中获取会话数据。但是,解决这个问题的方法是什么?我不能在我托管我的应用程序的所有机器上做同样的事情。所以请提出一些建议。
  • 这个问题可能只在服务器是本地主机的时候才会出现,在生产环境中不会出现?
  • 我还没有在生产环境中部署我的应用程序。我不确定。但是,服务器是在本地主机上还是在生产环境上真的很重要吗?
  • 不知道。这取决于那些“中”和“低”级别的人做什么。我自己不使用 IE。

标签: java jsp session servlets


【解决方案1】:

在所有浏览器中,session.getAttribute("aaaa") 都可以工作,试试看

【讨论】:

    【解决方案2】:

    来自How can I enable session tracking for JSP pages if the browser has disabled cookies?

    如果浏览器不支持 cookie,或者如果 cookie 被禁用,您仍然可以使用 URL 重写启用会话跟踪。 URL 重写本质上包括链接本身中的会话 ID 作为名称/值对。 但是,要使其有效,您需要为作为 servlet 响应一部分的每个链接附加会话 ID。通过以下几种方法可以极大地简化将会话 ID 添加到链接: response.encodeURL() 将会话 ID 与给定的 URL 相关联,如果您使用重定向,则可以使用 response.encodeRedirectURL()重定向的 URL 作为输入。

    encodeURL()和encodeRedirectedURL()都先判断浏览器是否支持cookies;如果是这样,则输入的 URL 会原封不动地返回,因为会话 ID 将作为 cookie 保存。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-27
      • 2013-03-08
      • 1970-01-01
      • 2011-07-05
      • 2017-04-05
      • 1970-01-01
      • 2011-10-15
      • 1970-01-01
      相关资源
      最近更新 更多