request.getSession()。getId()与session.getId()

时间:2013-03-22 17:26:26

标签: java

我正在由一位离职的顾问处理一些代码。我试图了解传递给方法的会话变量与 req.getSession()

返回的变量之间是否存在差异

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

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

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

VS

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

2 个答案:

答案 0 :(得分:3)

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

根据Documentation

  

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

答案 1 :(得分:2)

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