如题,我现在有两个页面login.jsp,index.jsp。然后我在index页面做了登录状态的判断,如果从login页面进入,是完全没有问题的,这个我也知道是什么原因,但是我现在有一个问题,就不通过login页面进入,直接输入index,这样就开始报session的空指针错误了,不知道各位有没有什么好的办法来帮小弟解决这个问题,原本的代码如下:
<%
    if(session.getAttribute("username").toString().equals(""))
    {
     %>
     <script>
     alert('尊敬的游客,由于您未登录,所以无法使用该平台,谢谢合作!');location.href('login.jsp');
     </script>
<%
    }
    %>JSPsession

解决方案 »

  1.   

    session.getAttribute("username") != null 就可以啦
      

  2.   

    改成下面这样:
    <%
    String user=(String)session.getAttribute("username");
        if(user==null)
        {
         %>
      <script>
         alert('尊敬的游客,由于您未登录,所以无法使用该平台,谢谢合作!');location.href('login.jsp');
         </script>
    <%
        }
        %>
      

  3.   

    或者直接
    if(session.getAttribute("username"))
      

  4.   

    这是个技巧问题,
    NULL==变量和"".equals("变量")
    是不会出现空指针的 
    你可以把NULL和""看成两个对象。调用的它们的==和equals方法
    如果把你定义的变量放在前面,就是需要你的变量要被创建,然后才能调用这个对象的==和equals方法。
    不然连username指向哪个对象也没告诉系统,如何通过usrname对象调用你后面的equals方法?
      

  5.   

    你这样会抛异常的,session.getAttribute("username")可能为null的,像2楼那样就好了
      

  6.   

    <%
       Users user=(Users)session.getAttribute("user");
       if(user==null)
       {
       response.sendRedirect("Login.jsp");
       return;
       }
       %>
      

  7.   

    你在登陆的时候,把用户的信息存储到session中,然后,判断有没有登陆就从session中取出来,如果能取出来对象,就说明有登陆。
      

  8.   


    这位说的有道理,而且在不知道对象状态情况下,以判断 null 为优先。
      

  9.   

    呵呵呵、、、、谢谢各位,终于解决了,特别是二楼的zhuyongsen2010 前辈。