我在写一个博客系统,在登录页面设置一个session对象用来在登录成功后记录登录用户id:
session.setAttribute("logID",logid);//logid是从登录界面获得的用户id变量是int型;
在显示个人博客页面获得用户id成功:
String userid =(String)session.getAttribute("userID").toString();
想在显示个人信息页面同样获得,再写同样一句就提示错误:
String userid =(String)session.getAttribute("userID").toString();
错误信息:
org.apache.jasper.JasperException: An exception occurred processing JSP page /readblog.jsp at line 2623: 
24:   </head>
25: <%
26: String userid =(String)session.getAttribute("userID").toString();
27: String logid=request.getParameter("id");
28: String username=null,author=null;
29: DB_Conn db_conn =new DB_Conn();
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause java.lang.NullPointerException
org.apache.jsp.readblog_jsp._jspService(readblog_jsp.java:86)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)是不能在多个页面中引用啊,还是我写的有什么错误,请各高手指教!

解决方案 »

  1.   

    String userid =(String)session.getAttribute("userID").toString();
     不要 toString()因为如果你的 session 中如果不存在userID 会报空指针异常你可以这样
    String userid =session.getAttribute("userID")+"";
      会自动转成 String
      

  2.   

    String userid =(String)session.getAttribute("userID").toString();报了空指针异常,应该是你的session中的数据丢失了.
    你试试
    String userid =(String)session.getAttribute("userID");
    if(userid == null){
      System.out.println("userid 为空了.");
    }你检查下自己的代码吧,这样用是没有问题的`肯定哪里出现了编码的逻辑错误.
      

  3.   

    你明明是session.setAttribute("logID",logid);//
    怎么取的时候变成
    String userid =(String)session.getAttribute("userID").toString();logID?userID?
    既然已经用了(String)就不需要toString了,如果值是空的还会报错。
      

  4.   

    对,如果你的session.getAttribute("userID")==null,你说还能toString()吗
      

  5.   

    谢谢各位了!那是之前我写String userid =(String)session.getAttribute("userID");时报错,我自作聪明加上的toString().不过现在我去掉了,还是报错,只要有这句的页面都出错了
      

  6.   

    session.setAttribute("logID",logid);//
    你session里设的不是logID么,怎么取的时候用的userID?
      

  7.   

    可以  String userid =(String)session.getAttribute("userID").toString(); 这一句出错啦   大家都说了,session里存的值跟你取得时候不一样啊
      

  8.   

    这个倒也能获取到,你想要获取同样的ID,可以定义一个公共类,第一次取出ID时把userid保存在xxx类中里,xxxForm.setUserid(userid);第二次取比较容易取,而且不会出错...
      

  9.   

    程序里都是userID,我发帖时不小心写错的,谢谢各位了,我也不知道怎么回事,我又改了一下午了,还是不行,不指示那句错了,但还是所有有那句的都错,同一个错误提示:java.lang.ClassCastException: java.lang.Integer;
    org.apache.jasper.JasperException: java.lang.ClassCastException: java.lang.Integer
    我再改改看吧,谢谢各位了!
      

  10.   

    引用错了,重写一遍出现了空指针一场,表示在某个地方,值为空。检查可知session.setAttribute("logID",logid);
    String userid =(String)session.getAttribute("userID").toString()出现了错误。
    原因:logID != userID
      

  11.   

    你修改以后出现的错误时数据类型转换错误,应该不是这里出错了,仔细看看代码,是不是String类型与int型相互转化时侯代码写错了
      

  12.   

    String userid =(String)session.getAttribute("logID")//
    这样,不过你的的logid是int型的,也有可能(String) 有问题,换种转换方式
      

  13.   

    session.setAttribute("logID",logid);
    session.getAttribute("logID",logid);//
    不用toString();
      

  14.   

    Integer.parseInt(session.getAtrribute(XXXXX)).toString();
    是否可行?????
      

  15.   

    把session的id取出来,然后别的页面通过id找session试试,这是我的想法,不一定好使哈
      

  16.   

    一个Session是绝对可以在多个JSP页面引用的,因为我就用过,还有这个session.setAttribute("logID",logid);//logid是从登录界面获得的用户id变量是int型;
    在显示个人博客页面获得用户id成功:
    String userid =(String)session.getAttribute("userID").toString();
    想在显示个人信息页面同样获得,再写同样一句就提示错误:
    String userid =(String)session.getAttribute("userID").toString();
    toString()和(String)转换是不行的,而且你获得的Session一个是logID,一个是userID,名字应该一致吧。如果你用了Struts,转换问题还好解决。
      

  17.   

    谢谢大家了!用session传int型的还得转来转去的,容易出错,最后改传的username,全是String型不用类型转换就没事了。谢谢各位了!呵呵