公司源码分析之分页实现

jsp代码如下:

<c:url var="paginationAction" value="spaceadmin.groupTypeManage.do"></c:url>
<c:if test="${pageObject.pageCount>1}">
    <div class="pagination">
        <c:if test="${pageObject.currentIndex!=1}">
            <c:url var="url" value="${paginationAction}">
				<c:param name="page" value="${1}"/>
			</c:url>
			<a href='<c:out value="${url}"/>'>首页</a>
			<c:url var="url" value="${paginationAction}">
				<c:param name="page" value="${pageObject.previousIndex}"/>
			</c:url>
			<a href='<c:out value="${url}"/>'>上一页</a>
        </c:if>
        <c:forEach var="x" begin="${pageObject.startIndexOnShow}" end="${pageObject.endIndexOnShow}" step="1" varStatus="status">
            <c:url var="url" value="${paginationAction}">
                <c:param name="page" value="${x}"/>
            </c:url>
            <c:choose>
                <c:when test="${pageObject.currentIndex==x}"><strong><c:out value="${x}"/></strong></c:when>
                <c:otherwise>
                    <a href='<c:out value="${url}"/>'><c:out value="${x}"/></a>
                </c:otherwise>
            </c:choose>
        </c:forEach>
        <c:if test="${pageObject.currentIndex<pageObject.endIndex}">
			<c:url var="url" value="${paginationAction}">
			   	<c:param name="page" value="${pageObject.nextIndex}"/>
			</c:url>
			<a href='<c:out value="${url}"/>'>下一页</a>
			<c:url var="url" value="${paginationAction}">
			   	<c:param name="page" value="${pageObject.endIndex}"/>
			</c:url>
			<a href='<c:out value="${url}"/>'>尾页</a>
        </c:if>
    </div>
</c:if>

 pageObject为PagingSupport类型,是后台封装的一个包含数据的对象。

public class PaginationSupport implements Serializable {

	private static final long serialVersionUID = 1L;

	public final static int PAGESIZE = 30;
	
	private int indexCountOnShow = 7; // 默认最多显示7个页码
	
	private int pageSize = PAGESIZE; 
	
	private List items;

	private int totalCount;

	private int[] indexes = new int[0];

	private int startIndex = 0;

	private int nextIndex;
	private int previousIndex;
	private int pageCount;
	private int currentIndex;
	private int endIndex;
.....

  List items 里面保存从数据库中得到的对象。至于分页的sql,因为公司只使用oracle的数据库,所以采用的就是类似如下的sql了:

select * from (select t1.*, rownum rn from (select * from t_photo) t1 where rownum<:num2) where rn>:num1

   这样每次从数据库得到的list先要塞到一个PagingSupport对象里,然后返回。

   从上面的jsp可以看到,因为pageObject是写死在分页的页面里,所以页面上必须要有pageObject变量,而且只能有一个,这就显得不是很灵活了。

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值