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){
   this.count = count;

}
  public int getCount(){
   return this.count;
  }

至此,准备工作已经全部完成,下面在jsp页面中做分页演示

pageSize.jsp

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@page import="com.gb.util.PageInfo"%>
<%@page import="com.gb.entity.StudentBean"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>分页功能的实现</title>
<%
  int currentPage = 1;//开始默认第一页
  String c = request.getParameter("currentPage");//获取当前页
  if(c!=null && !c.equals("")){
    currentPage = Integer.parseInt(c);
  }
  PageInfo infos = new PageInfo(currentPage);
  infos.setCurpage(currentPage);
  infos.setCount(2);//每一页显示的页数
  infos.setTotal();
  %>
  </head><body><center>
  <h1>学生信息</h1>
   <table width="50%">
     <tr>
    <td>学号</td>
    <td>姓名</td>
    <td>年龄</td>
    <td>性别</td>
    <td>地址</td>
   </tr>
      <%
    List<StudentBean> list = infos.getList();
    for(int i=0;i<list.size();i++){
     StudentBean bean = (StudentBean)(infos.getList()).get(i);
   %>
     <tr>
      <td><%=bean.getId() %></td>
    <td><%=bean.getName() %></td>
    <td><%=bean.getAge() %></td>
    <td><%=bean.getSex() %></td>
    <td><%=bean.getAddress()%></td>
     </tr>
     <% }%>
   <tr>
    <td colspan="5" align="center">
    <a href="pageSize.jsp?currentPage=1">首页</a>
    <%
     int counts = infos.getTotal();
     for(int i=0;i<counts;i++){
    %>
     <a href="pageSize.jsp?currentPage=<%=i+1%>"><%=i+1%></a>
    <%} %>
    <%
     int countes = infos.getTotal();
    %>
    <a href="pageSize.jsp?currentPage=<%=countes%>">尾页</a>
    </td>
   </tr>
  </table>
</center>  
  </body>
</html>
以上就是分页技术的实现,即供参考

你可能感兴趣的:(jsp)