如何检查会话是否存在?

时间:2014-10-02 10:57:13

标签: java session nullpointerexception

我想检查网页中是否存在会话,但是如果会话不存在,编译器会收到NullPointerException。如何检查会话以便它不会产生此异常? 考虑,会话不存在

try
    {
        HttpSession currentsession=request.getSession(false);
        if(currentsession==null) || currentsession.getAttribute("current-emailID").equals(null))
        {
            //Code to redirect to default page
        }
    }
    catch(NullPointerException npe)
    {
            //Code to redirect to default page
    }

2 个答案:

答案 0 :(得分:0)

以下是您的代码的问题:

  • NullPointerException可能会引发request == null,但这种情况不太可能。
  • 要使用currentSession.getAttribute检查空值,请使用==调用方法equals,因为您的属性可能是null,因此您可以通过在NPE上调用equals来引发null RuntimeException对象。
  • 正如kocko提到的那样,在许多情况下捕捉NullPointerException是不好的做法 - 特别是try。您应该删除此实例中的catch / {{1}}块。

答案 1 :(得分:0)

currentsession为空时,currentsession.getAttribute("current-emailID")会抛出NullPointerException

currentsession不为空时,currentsession.getAttribute("current-emailID")为空或不为空,在任何一种情况下,您应该使用== null而不是.equals(null)

所以你所有的测试都应该是(currentsession!=null) && (currentsession.getAttribute("current-emailID")!=null)

通过这种方式当currentsession为null时,可以防止执行第二个条件,然后抛出异常。