我正在由一位离职的顾问处理一些代码。我试图了解传递给方法的会话变量与 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);
答案 0 :(得分:3)
HttpServletRequest#getSession
返回与http request
关联的当前会话对象。如果与http请求关联的Session
对象和Session
对象相同,那么id将与因为Object
相同。
返回与此请求关联的当前会话,或者是否 请求没有会话,创建一个。
答案 1 :(得分:2)
这是糟糕的设计。您无法访问任何其他人的会话,并且会话已通过请求可用,因此会话参数是多余的。如果有机会,请将其删除。