新手。试验。做的是一个注销SESSION的JAVABEAN
这个是JAVABEAN:
package db;
import javax.servlet.http.*;
import javax.servlet.jsp.JspWriter;
public class logon {
   HttpSession session; public boolean Invalidate(String username)
       {
       String uid = (String)session.getAttribute(username);
       if (uid ==null || uid == "")
       {
               return false;
       }
       else
       {
               session.invalidate();
               return true;
           }
       }}这个JSP页面
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<jsp:useBean id="logon" class="db.logon" scope="session"></jsp:useBean>
<%
 
boolean b = logon.Invalidate("user");%>
我想去接那个返回值然后再判断。如果为FALSE就是没登陆。
“USER”是我存用户名的SESSION对应的
可执行时。却报这个错。。
type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:372)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause java.lang.NullPointerException
db.logon.Invalidate(logon.java:9)
org.apache.jsp.logon_jsp._jspService(logon_jsp.java:57)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.
然后我单把JAVABEAN 的东西拿出来放JSP里就可以。为什么它总是报
JAVABEAN的第九行出错:     String uid = (String)session.getAttribute(username);
单拿出来。直接放JSP里可以运行的。我都疯了。
各位帮帮我。

解决方案 »

  1.   

    session是jsp内置对象,你的使用方法有问题;在类logon.java:的第9行,session为null。对一个null对象调用getAttribute方法,会抛出java.lang.NullPointerException异常我给你找了一段说明,下面这段话是我从别的地方搜索的:
    //-------------------我是超级无敌分割线---------------------------------------
    首先,你要明白javabean只是普通的java类,不像servlet或jsp程序,可以轻松的接受远程的访问,假如要在jsp中把一些值存放在javabean中,你可以在页面的一开始,将编写好的javabean引入到页面,比如 <jsp:useBean id= "XXX " scope= "request " class= "XXX.XXX.XXX "> 或者直接 <@ import > 进来也行,这样你就可以在页面中处理javaBean的值了,假如想在多个页面中共享这个bean你可以更改它的 Scope的范围比如改到Session,这样从创建bean开始,就可以在session的范围内共享这个bean
    //-------------------我是超级无敌分割线---------------------------------------
      

  2.   

    public boolean Invalidate(HttpSession session,String username) 这里你应该把页面的session传过来才行。
      

  3.   

    HttpSession session不是你定义了就能用,你要获得用户自己的session。
      

  4.   

    哦。首先谢谢大家。小弟比较笨。你们是不是说把SESSION传进JAVABEAN。而不是在JAVABEAN里面?。。但如果在JAVABEAN里面。怎么定义自己的SESSION?还有。哪位技术大哥给我解释一下SESSION。。REQUEST等这些内置对像怎么在JAVABEAN里用。我找了好久也没找到太多资料。我自己用JBuilder导入了JAVAX包。然后用过这一次。但还是不对。哪位帮我详细的讲讲。谢谢。。