【问题标题】:How do I have my JavaBean retain when a user leaves and comes back?当用户离开和回来时,我如何保留我的 JavaBean?
【发布时间】:2018-05-29 00:47:01
【问题描述】:

我正在尝试学习 JavaEE。我以前使用过一点 JSP,但我从来没有弄乱过作用域和 servlet。

我有一个 servlet,当用户提交表单时调用它,并创建一个 UserBean bean 并将其添加到会话中。

UserBean userBean = new UserBean();
userBean.setLogin(user);
userBean(setPassword(pass);
request.getSession().setAttribute("user", userBean);

RequestDispatcher dispatcher = request.getRequestDispatcher("/index.jsp");
dispatcher.forward(request, response);

这会将我转发到 index.jsp,我会在上面显示我刚刚设置的值... index.jsp 就是这样:

${sessionScope.user.login}

这会打印我在表单中设置的用户名。这是正确的。那太棒了。现在我通过键入 URL(不仅仅是刷新 - 很好)返回到 mysite.com/index.jsp,并且信息已经消失。什么也没有。我的豆子丢了。我认为一次会议意味着一段较长的时间。在用户离开 30 分钟并通过输入我的 URL 回来后如何保留我的 bean?

我正在弄乱用户帐户系统,因此我希望用户能够离开并在几分钟后回来,而不必再次登录。有这个范围吗?我尝试从 sessionScope 切换到依赖,但没有区别。

【问题讨论】:

  • request.getSession().getAttribute("user") 将为您获取会话 bean。
  • 如何在用户离开 30 分钟后保留我的 bean 这听起来像是服务器端会话超时 - 如果 tomcat 检查 .../conf.web.xml <session-config> <session-timeout>-1</session-timeout> </session-config>

标签: java jsp servlets javabeans


【解决方案1】:

想通了。多亏了回复,我知道这可能不是我对“会话”含义的误解,并且服务器存在问题。

经过进一步挖掘,我发现问题在于我在仅通过其 IP 地址访问的服务器上运行应用程序。我改为通过一个实际的域,它工作正常!据说浏览器不喜欢接受来自没有域的站点的 cookie 的原因是我每次重新加载时都会创建一个新会话。

【讨论】:

    猜你喜欢
    • 2016-09-24
    • 2016-07-24
    • 2011-08-13
    • 2018-02-22
    • 2022-09-24
    • 2021-07-03
    • 2011-01-31
    • 2017-09-07
    • 2012-09-28
    相关资源
    最近更新 更多