分页

说出在JSP页面里是怎么分页的?

页面需要保存以下参数:(数据库的分页及比较)

总行数:根据sql语句得到总行数

每页显示行数:设定值

当前页数:请求参数

页面根据当前页数和每页行数计算出当前页第一行行数,定位结果集到此行,对结果集取出每页显示行数的行即可。

 

数据库:

Sqlserver:

       SELECT TOP 页大小 *

FROM TestTable

 

WHERE (ID NOT IN

        (SELECT TOP 页大小*(页数-1) id

         FROM 表

         ORDER BY id))

ORDER BY ID

 

 

--pageSize=5  页大小

--pageIndex=2 所要的页

--如果有主键可以,没以及键不行

select top 5 *

from aa where a1 not in

(select top 5 a1 from aa order by a1)

order by a1;

 

oracle:

    select * from '||v_sql||' where rownum<'||

         pageLastRow||'minus select * from '||v_sql

         ||' where rownum<'||pageFirstRow;

 

 

Session

    先取出数据中的所有信息封装到对象并保存在session转发到jsp页面做如下处理。

    <table border="1">

    <tr>

      <td>a1</td>

      <td>a2</td>

    </tr>

<%

     List l=(List)session.getAttribute("as");

     //一页显示多少行

     int pageSize=3;

     //总页数

     int pageCount=0;

     int currentPage=1;

     if(l!=null && l.size()>0)

     {

     pageCount=(l.size()/pageSize)+(l.size()%pageSize==0?0:1);

     if(request.getParameter("page")!=null)

     {

       currentPage=Integer.parseInt(request.getParameter("page"));

     }

     if(currentPage<1)

     {

       currentPage=1;

     }

     if(currentPage>pageCount)

     {

       currentPage=pageCount;

     }

     for (int i = (currentPage-1)*pageSize; i <(currentPage-1)*pageSize+pageSize; i++)

     {

       if(i>=l.size())

       {

         break;

       }

       Aa aa=(Aa)l.get(i);

       %>

        <tr>

      <td><%=aa.getA1()%></td>

      <td><%=aa.getA2()%></td>

    </tr>

       <%

       }

     }

%>

<tr>

  <td colspan="2">

    <%

    if(currentPage!=1)

    {

    %>

    <a href="page.jsp?page=1">首页</a>&nbsp;&nbsp;

    <a href="page.jsp?page=<%=currentPage-1%>">上一页</a>&nbsp;&nbsp;

    <%

    }

    if(currentPage!=pageCount)

    {

    %>

    <a href="page.jsp?page=<%=currentPage+1%>">下一页</a>&nbsp;&nbsp;

    <a href="page.jsp?page=<%=pageCount%>">最后一页</a>&nbsp;&nbsp;

    <%

    }

    %>

  </td>

</tr>

  </table>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值