分页显示 ----使用subList方法
1.pager类
package po; import java.util.List; public class Pager<T> { private int pageSize; private int currentPage; private int totalRecord; private int totalPage; private List<T> dataList; public Pager(int pageNum,int pageSize,List<T> sourceList) { if(sourceList == null || sourceList.isEmpty()){ return; } // 总记录条数 this.totalRecord = sourceList.size(); // 每页显示多少条记录 this.pageSize = pageSize; //获取总页数 this.totalPage = this.totalRecord / this.pageSize; if(this.totalRecord % this.pageSize !=0){ this.totalPage = this.totalPage + 1; } // 当前第几页数据 this.currentPage = this.totalPage < pageNum ? this.totalPage : pageNum; // 起始索引 int fromIndex = this.pageSize * (this.currentPage -1); // 结束索引 int toIndex = this.pageSize * this.currentPage > this.totalRecord ? this.totalRecord : this.pageSize * this.currentPage; this.dataList = sourceList.subList(fromIndex, toIndex); } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getCurrentPage() { return currentPage; } public void setCurrentPage(int currentPage) { this.currentPage = currentPage; } public int getTotalRecord() { return totalRecord; } public void setTotalRecord(int totalRecord) { this.totalRecord = totalRecord; } public int getTotalPage() { return totalPage; } public void setTotalPage(int totalPage) { this.totalPage = totalPage; } public List<T> getDataList() { return dataList; } public void setDataList(List<T> dataList) { this.dataList = dataList; } }
2.service
public Pager<Datebase> findCommodityOrder( List<Datebase> allDatebaseList, int pageNum, int pageSize) throws SQLException { DatebaseDAO dao = new DatebaseDAO(); Pager<Datebase> pager = new Pager<Datebase>(pageNum, pageSize, allDatebaseList); return pager; }
3.servlet
String pageNumStr = request.getParameter("pageNum"); int pageNum = 1; //显示第几页数据 if(pageNumStr!=null && !"".equals(pageNumStr.trim())){ pageNum = Integer.parseInt(pageNumStr); } int pageSize = 5; // 每页显示多少条记录 String pageSizeStr = request.getParameter("pageSize"); if(pageSizeStr!=null && !"".equals(pageSizeStr.trim())){ pageSize = Integer.parseInt(pageSizeStr); } Pager<Datebase> result; try { result = service.findCommodityOrder(service.selectall(), pageNum, pageSize); HttpSession session=request.getSession(false); if(session == null) { session=request.getSession(true); } session.setAttribute("result", result); response.sendRedirect("5.jsp"); } catch (SQLException e) { e.printStackTrace(); }
4.jsp
<script type="text/javascript"> // 当前第几页数据 var currentPage = ${result.currentPage}; // 总页数 var totalPage = ${result.totalPage}; function submitForm(actionUrl){ window.location.href=actionUrl; } // 第一页 function firstPage(){ if(currentPage == 1){ alert("已经是第一页数据"); return false; }else{ submitForm("datebaseServlet?flag=5&pageNum=1"); return true; } } // 下一页 function nextPage(){ if(currentPage == totalPage){ alert("已经是最后一页数据"); return false; }else{ submitForm("datebaseServlet?flag=5&pageNum=" + (currentPage+1)); return true; } } // 上一页 function previousPage(){ if(currentPage == 1){ alert("已经是第一页数据"); return false; }else{ submitForm("datebaseServlet?flag=5&pageNum=" + (currentPage-1)); return true; } } // 尾页 function lastPage(){ if(currentPage == totalPage){ alert("已经是最后一页数据"); return false; }else{ submitForm("datebaseServlet?flag=5&pageNum="+totalPage); return true; } } </script>
获取数据 ${result.dataList }
<br> 共${result.totalRecord }条记录共${result.totalPage }页 当前第${result.currentPage }页 <a href="#" onclick="firstPage();">首页</a> <a href="#" onclick="nextPage();">下一页</a> <a href="#" onclick="previousPage();">上一页</a> <a href="#" onclick="lastPage();">尾页</a>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现