以下是我实现分页的两个类:
(1)PageBean
package com.jspdev.bean;
import java.util.Vector;
public class PageBean 
{
public int curPage; //当前页面
public int maxPage; //最大页面数
public int maxRowCount; //最大的行数
public int rowsPerPage=5; //每页的行数
public Vector data; //所收得的记录数

public PageBean()
{

}

public void countMaxPage()
{
if(this.maxRowCount%this.rowsPerPage==0)
{
this.maxPage=this.maxRowCount/this.rowsPerPage;
}
else
{
this.maxPage=this.maxRowCount/this.rowsPerPage+1;
}
}

public Vector getResult()
{
return this.data;
}

public PageBean(ContactBean contact) 
{
try
{
this.maxRowCount=contact.getAvailableCount();
this.data=contact.getResult();
this.countMaxPage();
}
catch(Exception e)
{
e.getMessage();
}
}
}
(2)ContactBean     //用于业务的处理的
package com.jspdev.bean;
import java.util.*;
import com.jspdev.util.*;
import java.sql.*;public class ContactBean 
{
private Connection con;
Vector c;

public ContactBean()
{
try
{
con=DataBaseConnection.getConnection();
c=new Vector();
}
catch(Exception e)
{
e.getMessage();
}
}

public int getAvailableCount()
{
int ret=0;
try
{
Statement stmt=con.createStatement();
String strSql="select count(*) from Treatise";
ResultSet rs=stmt.executeQuery(strSql);
while(rs.next())
{
ret=rs.getInt(1);
}
}
catch(Exception e)
{
e.getMessage();
}
return ret;
}

public PageBean listData(String page)
{ PageBean pageBean=new PageBean(this);
try
{
int pageNum=Integer.parseInt(page);
Statement stmt=con.createStatement();
String strSql="select top"+pageNum*pageBean.rowsPerPage+" * from Treatise order by Number";
ResultSet rs=stmt.executeQuery(strSql);
int i=0;
while(rs.next())
{
if(i>(pageNum-1)*pageBean.rowsPerPage-1)
{
Object[] obj=new Object[6];
obj[0]=rs.getString("Number");
obj[1]=rs.getString("Subject");
obj[2]=rs.getString("IsPutin");
obj[3]=rs.getString("IsGuidance");
obj[4]=rs.getString("Stu_no");
obj[5]=rs.getString("Teacher_no");
c.add(obj);
}
i++;
}
rs.close();
stmt.close();

pageBean.curPage=pageNum;
pageBean.data=c;
}
catch(Exception e)
{
e.getMessage();
}
return pageBean;
}

public Vector getResult()
{
return c;
}
}
但在Tomcat里运行总出现:
org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:346)
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:810)
root cause java.lang.NullPointerException
org.apache.jsp.contact_jsp._jspService(contact_jsp.java:78)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:298)
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:810)
note The full stack trace of the root cause is available in the Apache Tomcat/5.0.25 logs.

解决方案 »

  1.   

    java.lang.NullPointerException
    contact_jsp.java:78行附近空指针
      

  2.   

    出现空值啦,仔细检查你的contact_jsp.java第78行!
      

  3.   

    while(rs!=null&&rs.next()){
      ...
      ...
    }先判断一下rs是否为null
      

  4.   

    我用MyEclipse来做编写的,但我却找不到contact_jsp.java(我只是有一个contact.jsp)用来显示数据.至于在数据库里我有写我的数据到里面,rs应该不为null.
      

  5.   

    contact_jsp.java在你的work路径下
    如jakarta-tomcat-5.0.28\work\
      

  6.   

    楼主这么写代码我觉得实在是不好,两个Bean互相调用,很容易出错,而且还没有关闭连接,真是问题重重。估计无论是效率还是维护都不如直接写成jsp。能看看楼主在jsp页面是怎么处理这两个Bean的吗?
      

  7.   

    ***.jsp在被服务器编译以后生成***_jsp.java放到work目录下
    ***_jsp.java又被编译成***_jsp.class文件再执行,也在work目录下
      

  8.   

    我是想用servlet来做转页功能.在servlet调用这两个JavaBean来实现
      

  9.   

    一个通用的JSP分页类http://www.javaresearch.org/members/qgz0910/1136877256620.rar效果如图:http://www.matrix.org.cn/resource/upload/forum/2005_10_15_162603_zVqJPrwRrT.gif