JSP中实现分页

来源:互联网 发布:oracle查看数据库状态 编辑:程序博客网 时间:2024/05/17 08:34


一、findAllEmps(currentPage,pageSize)方法中分页查询的sql语句

String sql="select * from (select emp.*,rownum rn from emp where rownum<=currentPage*pageSize) where rn>=(currentPage-1)*pageSize+1";
然后返回查询结果rs以 List<Emp>给调用它的方法。

要查询第2页的内容,currentPage*pageSize=2*5=10       (currentPage-1)*pageSize+1=(2-1)*5+1=6

先到表中查询前10条记录,再查询第6条以后的记录,这样,记录很多时,效率比较高。


、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

二、jsp页面中改变当前页码的值,查询表中的一部分记录。


<%     int pageSize=5;   int rowCount=empDao.getRowCount();   //查询表,计算总记录条数   int pageCount=(rowCount/pageSize==0)?(rowCount/pageSize):(rowCount/pageSize+1); //计算可以分为多少页显示      String currentPage_s=request.getParameter("currentPage");//reques获取当前页码   int currentPage=1;       //初始化为第一页   if(currentPage_s!=null){            currentPage=Integer.valueOf(currentPage_s);   }   if(currentPage<1){      currentPage=1;   }   if(currentPage>pageCount){      currentPage=pageCount;   }   //改变当前页的值,调用查询数据的方法,返回数据集合   List<Emp> emplist=empDao.findAllEmps(currentPage,pageSize);%>

页面中显示数据

 

 <body>  <center>    <table cellspacing="0" cellpadding="3" border="1" borderColor="#8080ff" width="80%">  <tr align="center">  <td>工号</td>   <td>姓名</td>    <td>职位</td>     <td>上司</td>      <td >雇佣日期</td>       <td>工资</td>        <td>奖金</td>         <td>所属部门</td>  </tr>   <%for(int i=0;i<emplist.size();i++){    out.print("<tr align='center'>");  out.print("<td>"+emplist.get(i).getEmpno()+"</td>");   out.print("<td>"+emplist.get(i).getEname()+"</td>");    out.print("<td>"+emplist.get(i).getJob()+"</td>");     out.print("<td>"+emplist.get(i).getMgr()+"</td>");      out.print("<td>"+emplist.get(i).getHiredate()+"</td>");       out.print("<td>"+emplist.get(i).getSal()+"</td>");        out.print("<td>"+emplist.get(i).getComm()+"</td>");         out.print("<td>"+emplist.get(i).getDeptno()+"</td>");  out.println("</tr>");  }   out.println("</table>");  out.println("<br/>");  //判断首页链接是否要显示    if(currentPage>1){    out.println("<a href=viewempByPage.jsp?currentPage="+1+" target='_self' >首页</a>");    }    else{        out.println("首页");    }   //判断上一页链接是否要显示    if(currentPage>1){    out.println("  ");    out.println("<a href=viewempByPage.jsp?currentPage="+(currentPage-1)+" target='_self' >上一页</a>");    }    else{   out.println("  上一页");   }    for(int i=1;i<=pageCount;i++){       if(i!=currentPage){        out.println("  ");       out.println("<a href=viewempByPage.jsp?currentPage="+i+" target='_self' >"+i+"</a>");   }else{      out.println("  "+i);   }   }   //判断下一页链接是否要显示   if(currentPage<pageCount){      out.println("  ");      out.println("<a href=viewempByPage.jsp?currentPage="+(currentPage+1)+" target='_self' >下一页</a>");    }   else{      out.println("  下一页");   }     //判断末链接是否要显示    if(currentPage<pageCount){      out.println("  ");      out.println("<a href=viewempByPage.jsp?currentPage="+pageCount+" target='_self' >末页</a>");    }    else{      out.println("   末页");   }   %>  </center>  </body>