页面分页信息分析
上图中,发现分页需要的信息有:当前页号,总共页数,上一页,下一页,附带一个数据列表。
由于一般分页是在列表页,所以上面的信息中,数据列表对象是已经有了的;而且上一页、下一页这个只是当前页的数量的加减,所以现在只需要能获取到当前页号,总共页数就可以。也就是说从Action中查询完数据后,需要返回一个这样的对象,它至少包括了:当前页号、总页数、数据列表(具体数据对象不明)。
再分析;总页数是怎么出来的?应该是要有每页最多显示多少条,然后总共的记录是多少;才能计算出总页数;即使前端页面不显示,但是我们后台计算也是需要总记录数和每页大小才能计算出总页数。这样对象中也要包括这2个属性。
页面对象(当前页号,总页数,数据列表,总记录数,每页大小)
设计分页对象
根据上面的分析;可以写出一个页面对象,内容包括了:当前页号,总页数,数据列表,总记录数,每页大小。
这个类主要目的是:在数据库层查询数据后,应该将查询到的列表封装给页面对象,并且根据从action中传递的页面大小和当前页,计算出在页面上所需要的属性(当前页、总页数、数据列表),然后再将这个页面对象返回给jsp页面使用。所以设计一个可以实现这个操作的类PageResult:
实现分页
1、 在baseDaoImpl中应该实现一个带分页功能的查询;
2、 由于分页信息在列表都需要使用到,所以可以将在jsp页面中需要使用到的分页对象PageResult和分页页号pageNo、页大小pageSize放置baseAction中。
3、 业务Action中调用分页的方法;
4、 Jsp页面中对分页对象进行解析。
抽取前端分页代码
创建pageNavigator.jsp到项目的common目录下;页面内容如下:
在一般的列表中只要引入 <jsp:include page="/common/pageNavigator.jsp"/>