加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 检查有效会话:isRequestedSessionIdValid()vs getSessi

发布时间:2020-12-14 05:47:31 所属栏目:Java 来源:网络整理
导读:我正在开发 Java Servlets.在检查用户是否已登录时,我想检查HTTP请求是否具有有效会话.为了检查,我有两种可能性: (1) protected void processRequest(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException { Htt
我正在开发 Java Servlets.在检查用户是否已登录时,我想检查HTTP请求是否具有有效会话.为了检查,我有两种可能性:

(1)

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

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

因为我将false作为参数传递,所以如果没有有效会话已经存在,则没有创建新会话,并且该函数返回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)才会为null.在第一个请求容器创建会话并发送Jsessionid cookie以及响应之后,它可以跟踪来自同一浏览器的后续请求.因此,在您的情况下,不应检查会话是否为空,您应该存储会话属性“is_logged_in”= true,并且如果session不为null,则检查此属性.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读