在实际应用中,由于优化缓存以及提高页面加载速度,在一个页面中有较多的记录数时,我们可以分页显示,一个页面只显示一定数目的记录,这在我们浏览网页的时候是非常常见的,今天我们就来初步上手一下jsp之分页显示。
jsp分页显示的具体思路是:首先获取总的记录数,然后自定义一个理想的每页显示记录数,通过这两个记录数可以得到总的页面数,再定义一个记录当前显示的页面数,在显示记录时,首先使通过数据库获得的结果集定位到当前要显示页的第一条记录,然后依次显示出一定数目的记录(就是上面提到的理想的每页显示记录数)。那么怎样得到当前要显示的页面数呢?我们可以定义一个字符串变量,通过request类的方法获取当前传递的页面数。
方法有了,下面就是具体实现的重要步骤。
且看以下代码:
result.last(); //移动到最后一个记录
int allItem = result.getRow();//获取最后一个记录的顺序数,即总的记录数
int pageSize = 5;//每页的记录数
int currentPage;//当前页面数
int totalPage = (allItem/pageSize);//总页面数
if(allItem%pageSize != 0){
totalPage += 1;
}
request.setCharacterEncoding("utf-8");
String strPage = request.getParameter("page");
if(strPage == null){
currentPage = 1;
}else{
currentPage = Integer.parseInt(strPage);
}
第一行代码是不可缺少的,只有移动到最后一个记录,才可以获取到总的记录数,缺少这句,那么allItem将会等于1;后面的代码中“page”是页面数据传递的一个变量,通过这个变量,点击“下一页”、“上一页”等就会传递当前页面信息,不清晰没有关系,继续往后看。
且看下面这段代码:
<%
if(currentPage>1){
%>
<a href="Paging.jsp?page=1">第一页</a>
<a href="Paging.jsp?page=<%= currentPage-1%>">上一页</a>
<%
}
%>
<%
if(currentPage<totalPage){
%>
<a href="Paging.jsp?page=<%= currentPage+1%>">下一页</a>
<a href="Paging.jsp?page=<%= totalPage %>">最后一页</a>
<%
}
%>
现在应该很清晰了,通过点击“第一页”,通过“page”传递参数,获得当前页面数,至于if语句中的条件判断,这也是很容易理解的,不然的话currentPage一直加或者一直减肯定会超出范围。只有在当前页面数大于1时,才给显示“下一页”、“最后一页”的链接,只有在当前页面数小于总的页面数时,才给显示“上一页”、“第一页”的链接。
然后就是负责显示的代码段了,且看以下代码:
//显示当前页面的记录
result.absolute((currentPage-1)*pageSize+1);
int i = 0;
while(i<pageSize && !result.isAfterLast()){
out.println(result.getInt("id")+"---"+result.getString("name")+"---"+result.getInt("age")+"<br>");
i++;
result.next();
}
关键在于absolute方法,通过这个方法移动到指定的记录数,我认为这是jsp分页显示的核心所在!至于!result.isAfterLast(),这是必须的,因为当前页是否有足够的记录填满显示是不确定的。
下面看一下结果吧:
数据库端:
运行结果:
页面简陋,将就着看吧。