<jsp:useBean id="pagi" class="my.DB" scope="page"/>

解决方案 »

  1.   

    改成:
    <jsp:useBean id="pagi" class="my.DB" scope="page"/>
    也不行啊!!!!!
      

  2.   

    <%@ page language="java" %>
    <%@ page import="import="java.sql.*" %>
    <%@ page import="import="my.DB" %>
    <%@ pageEncoding="GBK"%>
    <jsp:useBean id="pagi" class="DB" scope="page"/>这么写整齐点
      

  3.   

    <%@ page language="java" %>
    <%@ page import="import="java.sql.*" %>
    <%@ page import="import="my.DB" %>
    <%@ pageEncoding="GBK"%>
    <jsp:useBean id="pagi" class="my.DB" scope="page"/>
      

  4.   

    嘿嘿,再改一下
    <%@ page language="java" %>
    <%@ page import="java.sql.*" %>
    <%@ page import="my.DB" %>
    <%@ pageEncoding="GBK"%>
    <jsp:useBean id="pagi" class="my.DB" scope="page"/>
      

  5.   

    还是不行啊,我有两个Java类来的。
    Pagi.java文件:
    package my;  import java.util.*;  
    import java.sql.*;  
    import java.io.*;  
    import javax.servlet.*;  
    import javax.servlet.http.*;
    import my.DB.*;public class Pagi
    {  
      ResultSet CountTopicrs=null; //初始化总记录数Rs变量  
      ResultSet Pagirs=null;       //初始化分页时Rs变量
      public int intCountTopic=0;  //主题总数
      public int intPageSize;      //每页显示主题数 
      public int intPageCount;     //总页数 
      public int intPage=1;        //当前页数 
      public String nowPage;       // int i;
      public String HttpFile;      //初始化当前页intPage变量,以准确便获取当前页。 //当前的地址栏的文件
      DB db;                       //定义Linkdb类的一个对象。
      ...........
    }DB.java文件:
    package my;import java.sql.*;
    import javax.naming.*;
    import javax.sql.DataSource;
    //一个用于查找数据源的工具类。
    public class DB
    {
      private Connection con=null;
      private Statement stmt=null;
      ResultSet rs=null;
      .......
    }Page.jsp文件:
    <%@ page language="java" import="java.sql.*" pageEncoding="GBK"%>
    <%@ page import="my.Pagi.*" %>
    <jsp:useBean id="pagi" class="my.Pagi" scope="page"/>出错信息:
    org.apache.jasper.JasperException: /Page.jsp(4,0) The value for the useBean class attribute my.Pagi is invalid.

    org.apache.jasper.JasperException: Unable to load class for JSP
    两种错误??????????
      

  6.   

    Page.jsp文件:
    <%@ page language="java" import="java.sql.*" pageEncoding="GBK"%>
    <%@ page import="my.*" %>
    <jsp:useBean id="pagi" class="my.Pagi" scope="page"/>
      

  7.   

    是你的工具类在tomact中的位置放错了~
    请仔细检查以下~
      

  8.   

    什么工具类啊?
    我是初学者来的不懂,是不是要用java来编译成.class文件的啊????
      

  9.   

    先将你的类文件编译好 确定没有错误后 将生成my文件夹放到web程序的WEB-INF的classes下 之后才能像上面那样用
      

  10.   

    编译是通过了,也将.class文件放到classes下了,但是还是出错,是java里面出错的,高手请帮看看!!!我这个是分页显示SQL Server2000数据库数据,代码也是在网上找的,刚学的java不是很懂。Page.jsp文件:
    <body>
        
      <% 
      String CountQuery="select count(*) from custom";  
      String query = "select * from custom";
      ResultSet rs = mypagi.querySql(CountQuery, query, request);  
      String footer = mypagi.PageFooter(); 
      %>
      
      </body>pagi.java文件:
    public ResultSet querySql(String Countsql,String Pagisql,HttpServletRequest request)throws Exception
      {
        HttpFile=request.getRequestURI();       //获取当前文件名。 
        nowPage=request.getParameter("pages");  //获取当前页,将数值赋予intPage变量。[分页栏中必须要有pages参数] 
        if (nowPage==null)
        { 
          intPage=1; 
        }else{ 
          intPage=Integer.parseInt(nowPage); 
          if (intPage<1) intPage=1; 
        }
        
        CountTopicrs=db.executeQuery(Countsql); //#获取总记录数的结果集。
    }DB.java文件:
    public ResultSet executeQuery(String sql) throws Exception
      {
        rs=null;
        try
        {  
          Context initCtx = new javax.naming.InitialContext(); 
          Context envCtx = (Context) initCtx.lookup("java:comp/env"); 
          DataSource ds = (DataSource)envCtx.lookup("jdbc/test");
          con=ds.getConnection();
          stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
          rs=stmt.executeQuery (sql);
        }
        catch(SQLException e){throw e;}
        catch(NamingException e){throw e;}    return rs;
      }出错信息:
    exception org.apache.jasper.JasperException: Exception in JSP: /Page.jsp:3330:   <% 
    31:   String CountQuery="select count(*) from custom";  
    32:   String query = "select * from custom";
    33:   ResultSet rs = mypagi.querySql(CountQuery, query, request);  
    34:   String footer = mypagi.PageFooter(); 
    35:   %>
    36:   
    root cause java.lang.NullPointerException
    my.pagi.querySql(pagi.java:43)好像是说querySql函数没有通过,但是我看代码好像没有问题啊!!!!
      

  11.   

    就是上面出现的问题,执行到
    CountTopicrs=db.executeQuery(Countsql); //#获取总记录数的结果集
    就出错了的
      

  12.   

    先注释掉 CountTopicrs=db.executeQuery(Countsql); 
    打印出Countsql来,看看在数据库里是否能执行,如能执行
    放开刚才的注释,对它加try/catch捕获一下异常,看看是什么异常
      

  13.   

    DB.java和pagi.java是和你一样的只是连接数据库那里不一样,
    Context envCtx = (Context) initCtx.lookup("java:comp/env"); 
          DataSource ds = (DataSource)envCtx.lookup("jdbc/test");
    我用的是SQL Server2000,数据库连接池也配置好了的,我用下面的代码是可以执行存储过程了的:
    Context initCtx=new InitialContext();
    DataSource ds=(DataSource)initCtx.lookup("java:comp/env/jdbc/test");      conn=ds.getConnection();
          stmt=conn.createStatement();
          CallableStatement cs = conn.prepareCall("Show_Custom"); 
          cs.execute();
          rs = cs.getResultSet(); 我是这样子测试的:
    http://127.0.0.1:8080/test/Page.jsp
    就出错上面那个问题了。
      

  14.   

    那个Countsql是绝对没有问题的,我在数据库查询分析器里测试过了的。
      

  15.   

    你的querySql()方法有没有返回???
      

  16.   

    改了一下又出现以下错误:
    org.apache.jasper.JasperException: Unable to compile class for JSP在那句:
    ResultSet rs = mypagi.querySql(CountQuery, query, request);
    就出错了的。
    但是我注释掉上面一句,下面那句:
    String footer = mypagi.PageFooter(); 
    是可以正常执行的。
      

  17.   

    把你的pagi.java文件完整的代码贴上来看看贝??
      

  18.   

    pagi.java文件:
    package my;import java.util.*;  
    import java.sql.*;  
    import java.io.*;  
    import javax.servlet.*;  
    import javax.servlet.http.*;
    import my.DB.*;public class pagi
    {
    ResultSet CountTopicrs=null; //初始化总记录数Rs变量  
        ResultSet Pagirs=null;       //初始化分页时Rs变量
        public int intCountTopic=0;  //主题总数
        public int intPageSize;      //每页显示主题数 
        public int intPageCount;     //总页数 
        public int intPage=1;        //当前页数 
        public String nowPage;       // int i;
        public String HttpFile;      //初始化当前页intPage变量,以准确便获取当前页。 //当前的地址栏的文件
        DB db;                       //定义Linkdb类的一个对象。    public void pagi()  //定义构造器,初始化每页显示的主题数和数据库的连接。  
        {
            intPageSize=4;  //每页显示的记录数目
            db = new DB(); 
        }    //Countsql:总记录的Query字符串。[形式为select count(*) from tablename]  
        //Pagisql :要分页的Query字符串。[形式为select * from tablename where ...]  
        //request :参数传递过程中的变量。[用来控制翻页时的pages变量]  
        public ResultSet querySql(String Countsql,String Pagisql,HttpServletRequest request)throws Exception
        {
        HttpFile=request.getRequestURI();       //获取当前文件名。 
        nowPage=request.getParameter("pages");  //获取当前页,将数值赋予intPage变量。[分页栏中必须要有pages参数] 
        if (nowPage==null)
        { 
          intPage=1; 
        }else{ 
          intPage=Integer.parseInt(nowPage); 
          if (intPage<1) intPage=1; 
        }
        
        CountTopicrs=db.executeQuery(Countsql); //#获取总记录数的结果集。 
        
        if(CountTopicrs != null)
        {
          if (CountTopicrs.next())  
          {
            intCountTopic=CountTopicrs.getInt(1);  
          }
          intPageCount = (intCountTopic+intPageSize-1)/intPageSize;  //获取总页数。
      
          if (intPage>intPageCount)//如果当前页大于总页数,则当前页等于总页数。 
          {
            intPage=intPageCount;  
          }  
          CountTopicrs.close();    //关闭总主题数的数据集。
        }
        db.close_all();
        Pagirs=db.executeQuery(Pagisql);  //#获取执行分页的结果集。 
            return Pagirs;  
        }//end querySql function.  
         
        public int getCountTopic()//获取记录总数。
        {
            return intCountTopic;  
        }    public int getPageCount() //获取总页数。 
        {
            return intPageCount;  
        }    public int getIntPage()  //获取当前页数。 
        {  
            return intPage;  
        }      public String PageFooter() 
        {  
            String str = "";  
            int next, prev;  
            prev=intPage-1;  
            next=intPage+1;  
            str += "查询到<font color=red>"+getCountTopic()+"</font>条记录"+
                "    共<font color=red>"+getPageCount()+"</font>页";  
            str +=" 第<font color=red>"+getIntPage()+"</font>页 ";  
            if(intPage>1) 
                str += " <A href=" + HttpFile + "?pages=1"+">首页</A> ";  
            else 
                str += " 首页 ";  
            if(intPage>1)
                str += " <A href=" + HttpFile + "?pages=" + prev + ">上一页</A> ";  
            else
                str += " 上一页 ";  
            if(intPage<intPageCount)  
                str += " <A href=" + HttpFile + "?pages=" + next + ">下一页</A> ";  
            else 
                str += " 下一页 ";  
            if(intPageCount>1&&intPage!=intPageCount)  
                str += " <A href=" + HttpFile + "?pages=" + intPageCount + ">尾页</A>";  
            else
                str += " 尾页 ";  
      
            return str;  
        } 
      
        public void close_all() 
        {
            db.close_all();
        }
    }
      

  19.   

    DB.java文件:package my;import java.sql.*;
    import javax.naming.*;
    import javax.sql.DataSource;//一个用于查找数据源的工具类
    public class DB
    {
    private Connection con=null;
    private Statement stmt=null;
    ResultSet rs=null;

    public ResultSet executeQuery(String sql) throws Exception
    {
    rs=null;
    try
    {
    Context initCtx = new javax.naming.InitialContext();
    Context envCtx = (Context)initCtx.lookup("java:comp/env");
    DataSource ds = (DataSource)envCtx.lookup("jdbc/test");
    con=ds.getConnection();
    stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
    rs=stmt.executeQuery(sql);
    }
    catch(SQLException e){throw e;}
    catch(NamingException e){throw e;}

    return rs;
    }

    //执行Insert,Update语句
    public void executeUpdate(String sql) throws Exception
    {
    stmt = null;
    try
    {
    Context initCtx = new javax.naming.InitialContext();
    Context envCtx = (Context) initCtx.lookup("java:comp/env");
    DataSource ds = (DataSource)envCtx.lookup("jdbc/test");
    con=ds.getConnection();
    stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
    stmt.executeQuery(sql);
    stmt.close();
    con.close();
    }
    catch(SQLException ex)
    {
    System.err.println("执行SQL语句出错: " + ex.getMessage());
    }
    }

    // 关闭stmt和关闭连接
    public void close_all()
    {
    try
    {
    stmt.close();
    con.close();
    }
    catch(SQLException e){e.printStackTrace();}
    }
    }
      

  20.   

    Page.jsp文件:
    <body>
        
      <table  align="center" border=1> 
      <% 
      String CountQuery="select count(*) from custom";  
      String query = "select * from custom";
      ResultSet rs = mypagi.querySql(CountQuery, query, request);  
      String footer = mypagi.PageFooter(); 
      %>
      </table>
      

  21.   

    哈哈!——,这位老兄,怎么和我的代码一样呢。我的代码是直接写在JSP中的,这样不好,我现在都在想写在javabean中了。但我还没有成熟的代码,不好意思发了
      

  22.   

    public void pagi()  //定义初始化每页显示的主题数和数据库的连接。  
        {
            intPageSize=4;  //每页显示的记录数目
            db = new DB(); 
        }
    构造器,不要void
      

  23.   

    检查一下大小写先
    java是区分大小写的,要是哪个方法名大小写搞错了,就一下跨掉了,
    上次我在JSP中搞程序查得累死了,最后就是个l和L没区分搞出来的错
      

  24.   

    Pagirs=db.executeQuery(Pagisql);  //#获取执行分页的结果集。 
    仔细看看DB的方法,根本没有实现分页查询的方法...执行的仅仅是SELECT * FROM..因此在
    JSP
    ResultSet rs = mypagi.querySql(CountQuery, query, request);  
    上获取的结果集其实并没有所谓的分页结果集...你先学会SQL的取一段记录的方法,不同的数据库取的类型不同,有TOP,ORACLE 的ROWID 等等,然后再根据这原来代码的思路自己写一个带有分页的SQL,扔进db.executeQuery处理.你一开始的错误也许就是你最简单的错误,比如你好JAVA,没有编译成CLASS,没有放到调用页面对应的路径,如果是在一个WEB的应用,应该把CLASS放到WEB-INF的class下
    路径名要与PACKAGE名相同,如果 WEB-INF\my\pagi.class
    如果是单一的测试,则只要把相应CLASS放在对应的JSP目录下,目录结构和上面的类似再建议先看些JAVA命名规范文档-_-..你的命名实在不敢恭维..
      

  25.   

    程序写的有点烂啊~你得好好修改~你先写一个确定没有错误的HELLO JSP程序,测试一下看看运行环境是否存在问题?