说出在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>
<a href="page.jsp?page=<%=currentPage-1%>">上一页</a>
<%
}
if(currentPage!=pageCount)
{
%>
<a href="page.jsp?page=<%=currentPage+1%>">下一页</a>
<a href="page.jsp?page=<%=pageCount%>">最后一页</a>
<%
}
%>
</td>
</tr>
</table>