分页(el)

基本命令

Page类
//显示5个页码
public class Page<T> {
	/**
	 * page是分页模型对象
	 * 
	 */
	
	public static final Integer PAGE_SIZE=2;
	
	//当前页码
	private Integer pageNo;
	//总页码
	private Integer pageTotal;
	//当前页显示数量
	private Integer pageSize=PAGE_SIZE;
	//总记录数
	private Integer pageTotalCount;
	//当前页数据
	private List<T> items;
	
	
	public Integer getPageNo() {
		return pageNo;
	}
	public void setPageNo(Integer pageNo) {
		if (pageNo < 1) {
			pageNo=1;
		}
		if (pageNo>pageTotal){
			pageNo=pageTotal;
		}
		this.pageNo = pageNo;
	}
	public Integer getPageTotal() {
		return pageTotal;
	}
	public void setPageTotal(Integer pageTotal) {
		this.pageTotal = pageTotal;
	}
	public void setPageSize(Integer pageSize) {
		this.pageSize = pageSize;
	}
	public Integer getPageTotalCount() {
		return pageTotalCount;
	}
	public void setPageTotalCount(Integer pageTotalCount) {
		this.pageTotalCount = pageTotalCount;
	}
	public List<T> getItems() {
		return items;
	}
	public void setItems(List<T> items) {
		this.items = items;
	}
	@Override
	public String toString() {
		return "Page [pageNo=" + pageNo + ", pageTotal=" + pageTotal + ", pageSize=" + pageSize + ", pageTotalCount="
				+ pageTotalCount + ", items=" + items + "]";
	}
}
service类
//接口加上
	public Page<Book> page(int pageNo, int pageSize);


//impl里面写方法
@Override
	public Page<Book> page(int pageNo, int pageSize) {
		// TODO Auto-generated method stub
		Page<Book> page=new Page<Book>();
		//设置每页显示的数量
        page.setPageSize(pageSize);
		//求总记录数
		Integer pageTotalCount=bookDao.queryForPageTotalCount();
		//设置总记录数
		page.setPageTotalCount(pageTotalCount);
		//求总页码
		Integer pageTotal=pageTotalCount/pageSize;
		if (pageTotalCount%pageSize>0) {
			pageTotal+=1;
		}
		//设置总页码
		page.setPageTotal(pageTotal);

        //设置当前页码
        page.setPageNo(pageNo);

        int begin=((page.getPageNo()-1)*pageSize);
		//数据集合
		List<Book> items=bookDao.queryForPageItems(begin,pageSize);
		page.setItems(items);
		
		return page;
	}
servlet类
 protected void page(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    	//1 获取请求的参数 pageNo 和pageSize
    	int pageNo =WebUtils.parseInt(req.getParameter("pageNo"),1 );
    	int pageSize=WebUtils.parseInt(req.getParameter("pageSize"),Page.PAGE_SIZE);
    	//2调用BookService.page(pageNo,pageSize)
    	Page<Book> page=bookService.page(pageNo,pageSize);
    	//3保存Page对象到req
    	req.setAttribute("page", page);
    	//4跳转
    	req.getRequestDispatcher("/pages/manager/book_manager.jsp").forward(req, resp);
    }
jsp
    <div id="page_nav">
        <c:if test="${requestScope.page.pageNo>1 }">
            <a href="manager/bookServlet?action=page&pageNo=1">首页</a>
            <a href="manager/bookServlet?action=page&pageNo=${requestScope.page.pageNo-1 }">上一页</a>
        </c:if>
        <%--页面输出的开始--%>
        <c:choose>
            <%--总页码小于等于5的情况--%>
            <c:when test="${requestScope.page.pageTotal<=5}">
                <c:forEach begin="1" end="${requestScope.page.pageTotal}" var="i">
                    <c:if test="${i==requestScope.page.pageNo}">
                        【${i}</c:if>
                    <c:if test="${i!=requestScope.page.pageNo}">
                        <a href="manager/bookServlet?action=page&pageNo=${i}">${i}</a>
                    </c:if>
                </c:forEach>
            </c:when>
            <%--总页码大于5的情况--%>
            <c:when test="${requestScope.page.pageTotal>5}">
                <c:choose>
                    <%--情况1,当页码为前三个,页面范围1-5--%>
                    <c:when test="${requestScope.page.pageNo<=3}">
                        <c:forEach begin="1" end="5" var="i">
                            <c:if test="${i==requestScope.page.pageNo}">
                                【${i}</c:if>
                            <c:if test="${i!=requestScope.page.pageNo}">
                                <a href="manager/bookServlet?action=page&pageNo=${i}">${i}</a>
                            </c:if>
                        </c:forEach>
                    </c:when>
                    <%--情况2,当页码为后三个,页面范围--%>
                    <c:when test="${requestScope.page.pageNo>requestScope.page.pageTotal-3}">
                        <c:forEach begin="${requestScope.page.pageTotal-4}" end="${requestScope.page.pageTotal}" var="i">
                            <c:if test="${i==requestScope.page.pageNo}">
                                【${i}</c:if>
                            <c:if test="${i!=requestScope.page.pageNo}">
                                <a href="manager/bookServlet?action=page&pageNo=${i}">${i}</a>
                            </c:if>
                        </c:forEach>
                    </c:when>
                    <%--情况3,中间--%>
                    <c:otherwise>
                        <c:forEach begin="${requestScope.page.pageNo-2}" end="${requestScope.page.pageNo+2}" var="i">
                            <c:if test="${i==requestScope.page.pageNo}">
                                【${i}</c:if>
                            <c:if test="${i!=requestScope.page.pageNo}">
                                <a href="manager/bookServlet?action=page&pageNo=${i}">${i}</a>
                            </c:if>
                        </c:forEach>
                    </c:otherwise>

                </c:choose>
            </c:when>
        </c:choose>
        <%--【${requestScope.page.pageNo}--%>
        <%--页面输出的结束--%>
        <c:if test="${requestScope.page.pageNo<requestScope.page.pageTotal }">
            <a href="manager/bookServlet?action=page&pageNo=${requestScope.page.pageNo+1 }">下一页</a>
            <a href="manager/bookServlet?action=page&pageNo=${requestScope.page.pageTotal }">末页</a>
        </c:if>
        共${requestScope.page.pageTotal }页,${requestScope.page.pageTotalCount }条记录
        到第<input value="" name="pn" id="pn_input"/><input id="searchPageBtn" type="button" value="确定">
        <script type="text/javascript">

            $(function () {
                $("#searchPageBtn").click(function () {
                    var pageNo = $("#pn_input").val();
                    //alert(pageNo);
                    location.href = "${pageScope.basePath}manager/bookServlet?action=page&pageNo=" + pageNo;
                });
            });

        </script>
    </div>
jsp优化
//用c:set优化
<div id="page_nav">
        <c:if test="${requestScope.page.pageNo>1 }">
            <a href="manager/bookServlet?action=page&pageNo=1">首页</a>
            <a href="manager/bookServlet?action=page&pageNo=${requestScope.page.pageNo-1 }">上一页</a>
        </c:if>
        <%--页面输出的开始--%>
        <c:choose>
            <%--总页码小于等于5的情况--%>
            <c:when test="${requestScope.page.pageTotal<=5}">
                <c:set var="begin" value="1"/>
                <c:set var="end" value="${requestScope.page.pageTotal}"/>
            </c:when>
            <%--总页码大于5的情况--%>
            <c:when test="${requestScope.page.pageTotal>5}">
                <c:choose>
                    <%--情况1,当页码为前三个,页面范围1-5--%>
                    <c:when test="${requestScope.page.pageNo<=3}">
                        <c:set var="begin" value="1"/>
                        <c:set var="end" value="5"/>
                    </c:when>
                    <%--情况2,当页码为后三个,页面范围--%>
                    <c:when test="${requestScope.page.pageNo>requestScope.page.pageTotal-3}">
                        <c:set var="begin" value="${requestScope.page.pageTotal-4}"/>
                        <c:set var="end" value="${requestScope.page.pageTotal}"/>
                    </c:when>
                    <%--情况3,中间--%>
                    <c:otherwise>
                        <c:set var="begin" value="${requestScope.page.pageNo-2}"/>
                        <c:set var="end" value="${requestScope.page.pageNo+2}"/>

                    </c:otherwise>
                </c:choose>
            </c:when>
        </c:choose>
            <c:forEach begin="${begin}" end="${end}" var="i">
                <c:if test="${i==requestScope.page.pageNo}">
                    【${i}</c:if>
                <c:if test="${i!=requestScope.page.pageNo}">
                    <a href="manager/bookServlet?action=page&pageNo=${i}">${i}</a>
                </c:if>
            </c:forEach>
        <%--【${requestScope.page.pageNo}--%>
        <%--页面输出的结束--%>
        <c:if test="${requestScope.page.pageNo<requestScope.page.pageTotal }">
            <a href="manager/bookServlet?action=page&pageNo=${requestScope.page.pageNo+1 }">下一页</a>
            <a href="manager/bookServlet?action=page&pageNo=${requestScope.page.pageTotal }">末页</a>
        </c:if>
        共${requestScope.page.pageTotal }页,${requestScope.page.pageTotalCount }条记录
        到第<input value="" name="pn" id="pn_input"/><input id="searchPageBtn" type="button" value="确定">
        <script type="text/javascript">

            $(function () {
                $("#searchPageBtn").click(function () {
                    var pageNo = $("#pn_input").val();
                    //alert(pageNo);
                    location.href = "${pageScope.basePath}manager/bookServlet?action=page&pageNo=" + pageNo;
                });
            });

        </script>
    </div>

</div>

在这里插入图片描述

来源:尚硅谷
地址:https://www.bilibili.com/video/BV1Y7411K7zz?spm_id_from=pageDriver
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值