基本命令
Page类
public class Page<T> {
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);
@Override
public Page<Book> page(int pageNo, int pageSize) {
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 {
int pageNo =WebUtils.parseInt(req.getParameter("pageNo"),1 );
int pageSize=WebUtils.parseInt(req.getParameter("pageSize"),Page.PAGE_SIZE);
Page<Book> page=bookService.page(pageNo,pageSize);
req.setAttribute("page", page);
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();
location.href = "${pageScope.basePath}manager/bookServlet?action=page&pageNo=" + pageNo;
});
});
</script>
</div>
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: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();
location.href = "${pageScope.basePath}manager/bookServlet?action=page&pageNo=" + pageNo;
});
});
</script>
</div>
</div>
来源:尚硅谷
地址:https://www.bilibili.com/video/BV1Y7411K7zz?spm_id_from=pageDriver