2

我正在由一位已离职的顾问编写一些代码。我试图了解传递给方法的会话变量与req.getSession()返回的变量之间是否存在差异

当我在调试器中检查它们时,它们看起来是一样的。是否有理由不直接从session.getId()变量而不是req.getSesssion.getId()获取 id ?

public void enqueueRequest(
        HttpSession session,
        HttpServletRequest req,
        HttpServletResponse res) throws IOException {

            req.getSession().removeAttribute(TIME_STAMP);
            ResponseCache.INSTANCE.remove(req.getSession().getId());
        }
}

对比

session.getId();
session.removeAttribute(TIME_STAMP);
4

2 回答 2

3

HttpServletRequest#getSession返回与 关联的当前会话对象http request。如果您的Session对象和Session与 http 请求关联的对象相同,则 id 将相同,因为Object相同。

根据文档

返回与此请求关联的当前会话,或者如果请求没有会话,则创建一个。

于 2013-03-22T17:31:41.190 回答
2

这是糟糕的设计。您将无法访问其他任何人的会话,并且会话已经通过请求可用,因此会话参数是多余的。如果有机会,请删除它。

于 2013-03-23T00:51:03.397 回答