日期:2014-05-16  浏览次数:20297 次

JSP分页实例
分页技术实现

在开发网站的项目中难免会遇到各种各样的分页操作,分页的方法多种多样,现在将我在项目开发中的使用到的通用分页技术(既可以使用在jsp中,也可以使用在servlet,struts中,使用于多种数据库)分享给大家,供参考;

首先:在数据库操作的类中准备两个方法,一个是查询数据的方法,一个是获取总页数的方法

1)数据查询方法:

public List<StudentBean> getPage_student(int currentPage, int pageSize) {

  List<StudentBean> list = new ArrayList<StudentBean>();

  String sql = "select * from student where 1=1";

  try {

   int beginrow = pageSize * (currentPage - 1);// 开始的位置

   int endrow = currentPage * pageSize;// 终止的位置

   int currentNum = 0;// 经历的行数

   conn = db.getConnection();//获取数据库连接

   pstmt = conn.prepareStatement(sql);//执行sq语句

   rs = pstmt.executeQuery();

   while (rs.next()) {

    if (currentNum >= beginrow && currentNum < endrow) {

     StudentBean student = new StudentBean();//实例化一个实体类

     student.setId(rs.getInt("id"));

     student.setAge(rs.getInt("age"));

     student.setName(rs.getString("name"));

     student.setSex(rs.getString("sex"));

     student.setAddress(rs.getString("address"));

     list.add(student);
         if(currentNum == endrow - 1)
          break;

    }
        currentNum ++;

   }

  } catch (Exception e) {

   e.printStackTrace();

  }

  return list;

}

2)获取分页的总页数:

public int getPageSize(int count){//获取总的页数
  int total = 0;
  String sql = "select count(*) from student"; 
  try{
   conn = db.getConnection();
   pstmt = conn.prepareStatement(sql);
   rs = pstmt.executeQuery();
   if(rs.next()){
        int records = rs.getInt(1);
        if(records%count==0){
         total = records / count;
        }else{
         total = records / count + 1;
       }
      }
    }catch(Exception ex){
     ex.printStackTrace();
    }
    return total;
  }
以上工作完成以后,在准备一个分页功能的逻辑功能方法 (通常放在util包中)

public class PageInfo {
  private int total;//总页数
  private int curpage;//当前页
  private int count;//每页显示记录数
  private List<StudentBean> list;//接受数据库操作的方法返回的数组
  private StudentDAO dao = new StudentDAO();//实例化数据库操作的类
  public List<StudentBean> getList(){
    list = dao.getPage_student(curpage,count);//开始进行分页
    return list;
}
  public PageInfo(int curpage){
    this.curpage = curpage;
   }
  public void setTotal(){
    this.total = dao.getPageSize(count);//得到总的页数
   }
  public int getTotal(){
   return this.total;
  }
  public void setCurpage(int curpage){
   this.curpage = curpage;

}
  public int getCurpage(){
   return this.curpage;
  }
  public void setCount(int count){
   thi