gpt4 book ai didi

java - 检查有效 session : isRequestedSessionIdValid() vs getSession(false)

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:56:04 26 4
gpt4 key购买 nike

我正在开发 Java Servlet。在检查用户是否登录时,我想检查 HTTP 请求是否具有有效 session 。为了检查这一点,我有两种可能性:

(1)

protected void processRequest(HttpServletRequest request, 
HttpServletResponse response) throws ServletException, IOException {

HttpSession session = request.getSession(false);
if (session != null) {
// user is logged in
...
}
}

由于我将 false 作为参数传递,如果不存在有效 session ,则不会创建新 session ,并且该函数返回 null,我可以检查。

或者我这样做:

(2)

    if (request.isRequestedSessionIdValid()) {
// user is logged in
...
}

有什么区别,有什么优势/劣势吗?或者这两个功能的作用大致相同?

最佳答案

表单 Javadoc

isRequestedSessionIdValid boolean isRequestedSessionIdValid() Checks whether the requested session ID is still valid. If the client did not specify any session ID, this method returns false.

Returns: true if this request has an id for a valid session in the current session context; false otherwise

所以在意义上两者是相同的。但是你需要注意的是 request.getSession(false) 只有在第一次请求容器的情况下才会为空。在第一个请求容器创建 session 并发送 Jsessionid cookie 和 response 之后,它可以跟踪来自同一浏览器的后续请求。因此,在您的情况下,您应该存储一个 session 属性“is_logged_in”=true,而不是检查 session 是否为空,如果 session 不为空,也检查此属性。

关于java - 检查有效 session : isRequestedSessionIdValid() vs getSession(false),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14243455/

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