gpt4 book ai didi

jsp - session.invalidate() 在 Websphere Application Server 中不起作用

转载 作者:行者123 更新时间:2023-12-02 00:04:58 24 4
gpt4 key购买 nike

我们需要从主应用程序转到供应商登录页面。如果 session 有效,则在主应用程序中选择的数据在供应商页面中可见,我们是否将数据存储在 session 中。为了处理这个问题,在 Tomcat 中,我们在供应商登录 jsp 的开头有以下代码。

request.getSession().invalidate();

我们现在正在迁移到 Websphere Application Server。相同的代码在 WAS 中不起作用。我们收到 IllegalStateException。我在某处读到 WAS 通过 cookie 处理 session 。因此,如果 session 已经失效,则会抛出 IllegalStateException。

我将 WAS 的代码更改为如下所示:userId 是我在主应用程序的 session 中保存的用户 ID。

if ((request.getSession() != null) && (request.getSession().getAttribute("userId") != null)) { // Old session
request.getSession().invalidate();
}

即使控制进入 if 条件,它也会给出 IllegalStateException。对于我们的要求,我有一种替代方法可以删除供应商登录 jsp 开始时的所有 session 参数,这样就不会传递任何内容。但是为此,我必须一个一个地删除每个参数(那里有近 20 个)。并且将来我将在 session 中保存的任何新参数,我都必须更新此 jsp。

如果session老了,有没有办法先让整个session失效?

最佳答案

我们用下面的代码解决了这个问题。

<%@page session="false"%>

<%
HttpSession session = request.getSession();
if (session!=null) {
session.invalidate();
}
%>

我们在主登录 jsp 和供应商登录 jsp 中都添加了这段代码。因此,每次加载 jsp 时,都会消除自动创建 HTTP session (http://docs.oracle.com/cd/A97688_16/generic.903/bp/j2ee.htm#1008677)。然后我们显式地创建一个 session 。此代码现在可以在 Websphere Application Server 中完美运行。

关于jsp - session.invalidate() 在 Websphere Application Server 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18929718/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com