JavaWeb 逻辑分页示例

一、逻辑分页就是一次性把数据查询出来,然后翻页每次是从内存 中取得,翻页的速度快,对于数量量比较小来说

很适合,数据量大,最好采用物理分页,防止内存溢出

二、分页工具条(pagingToolbar.jsp)

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN">
<div style="font-family:微软雅黑" >
	<div class="gridItem"
		style="padding-left: 55px; width: 450px; padding-top: 5px;  float: left; text-align: left; height: 20px; font-size: 15px;">
		共有
		<span id="spanTotalInfor"></span> 条记录 当前第
		<span id="spanPageNum"></span>页 共
		<span id="spanTotalPage"></span>页
	</div>
	<div class="gridItem"
		style="margin-left: 200px; padding: 5px; width: 450px; float: left; text-align: center; height: 20px; vertical-align: middle; font-size: 15px;">
		<span id="spanFirst">首页</span>&nbsp;&nbsp;
		<span id="spanPre">上一页</span>&nbsp;&nbsp;
		<span id="spanInput"
			style="margin: 0px; padding: 0px 0px 0px 0px; height: 100%;">
			第<input id="Text1" type="text" class="TextBox" onkeyup="changepage()"
				style="height: 20px; text-align: center; width: 50px" />页 </span>&nbsp;&nbsp;
		<span id="spanNext">下一页</span>&nbsp;&nbsp;
		<span id="spanLast">尾页</span>
	</div>

</div>

三、分页JS

 <script type="text/javascript">
	  var theTable = document.getElementById("resultTable");
	  var txtValue = document.getElementById("Text1").value;
	  function changepage() {
	      var txtValue2 = document.getElementById("Text1").value;
	      if (txtValue != txtValue2) {
	          if (txtValue2 > pageCount()) {
	          }
	          else if (txtValue2 <= 0) {
	            
	          }
	          else if (txtValue2 == 1) {
	              first();
	          }
	          else if (txtValue2 == pageCount()) {
	              last();
	          }
	          else {
	        	 
	              hideTable();
	              page = txtValue2;
	              pageNum2.value = page;
	
	              currentRow = pageSize * page;
	              maxRow = currentRow - pageSize;
	              if (currentRow > numberRowsInTable) currentRow = numberRowsInTable;
	              for (var i = maxRow; i < currentRow; i++) {
	                  theTable.rows[i].style.display = '';
	              }
	              if (maxRow == 0) { preText(); firstText(); }
	              showPage();
	              nextLink();
	              lastLink();
	              preLink();
	              firstLink();
	         }
	
	          txtValue = txtValue2;
	      }
	  }
	
	//获取对应控件
	  var totalPage = document.getElementById("spanTotalPage");//总页数
	  var pageNum = document.getElementById("spanPageNum");//当前页
	  var totalInfor = document.getElementById("spanTotalInfor");//记录总数
	  var pageNum2 = document.getElementById("Text1");//当前页文本框
	
	  var spanPre = document.getElementById("spanPre");//上一页
	  var spanNext = document.getElementById("spanNext");//下一页
	  var spanFirst = document.getElementById("spanFirst");//首页
	  var spanLast = document.getElementById("spanLast");//尾页
	  var pageSize = 10;//每页信息条数
	
	  var numberRowsInTable = theTable.rows.length-1;//表格最大行数
	
	  var page = 1;
	
	  //下一页
	  function next() {
	      if (pageCount() <= 1) {
	      }
	      else {
	              hideTable();
	              currentRow = pageSize * page + 1; //下一页的第一行
	              maxRow = currentRow + pageSize;    //下一页的一行
	              if (maxRow > numberRowsInTable) maxRow = numberRowsInTable+1;//如果计算中下一页最后一行大于实际最后一行行号
	              for (var i = currentRow; i < maxRow; i++) {
	                  theTable.rows[i].style.display = '';
	              }
	              page++;
	              pageNum2.value = page;
	              if (maxRow == numberRowsInTable) { //如果下一页的最后一行是表格的最后一行
	                 // nextNoLink(); //下一页 和尾页 不点击
	                 // lastNoLink(); 
	              }
	              showPage();//更新page显示
	              if (page == pageCount()) {//如果当前页是尾页
	                  nextNoLink();
	                  lastNoLink();
	              }
	              
	              preLink();
	              firstLink();
	          }
	      }
	
	
	
	  //上一页
	  function pre() {
	      if (pageCount() <= 1) {
	      }
	      else {       
	              hideTable();
	              page--;
	              pageNum2.value = page;
	              currentRow = pageSize * page + 1;//下一页的第一行
	              maxRow = currentRow - pageSize;//本页的第一行
	              if (currentRow > numberRowsInTable) currentRow = numberRowsInTable;//如果计算中本页的第一行小于实际首页的第一行行号,则更正
	              for (var i = maxRow; i < currentRow; i++) {
	                  theTable.rows[i].style.display = '';
	              }
	              if (maxRow == 0) { preNoLink(); firstNoLink(); }
	              showPage();//更新page显示
	              if (page == 1) {
	                  firstNoLink();
	                  preNoLink();
	              }
	              nextLink();
	              lastLink();
	          }
	      }
	
	
	  //第一页
	  function first() {
	      
	      if (pageCount() <= 1) {
	      }
	      else {
	          hideTable();//隐藏所有行
	          page = 1;
	          pageNum2.value = page;
	          for (var i = 1; i < pageSize+1; i++) {//显示第一页的信息
	              theTable.rows[i].style.display = '';
	          }
	          showPage();//设置当前页
	
	          firstNoLink();
	          preNoLink();
	          nextLink();
	          lastLink();
	      }
	  }
	
	
	  //最后一页
	  function last() {
	      if (pageCount() <= 1) {
	      }
	      else {
	          hideTable();//隐藏所有行
	          page = pageCount();//将当前页设置为最大页数
	          pageNum2.value = page;
	          currentRow = pageSize * (page - 1)+1;//获取最后一页的第一行行号
	          for (var i = currentRow; i < numberRowsInTable+1; i++) {//显示表格中最后一页信息
	              theTable.rows[i].style.display = '';
	          }
	
	          showPage();
	          lastNoLink();
	          nextNoLink();
	          preLink();
	          firstLink();
	      }
	  }
	
	
	  function hideTable() {//隐藏表格内容
	      for (var i = 0; i < numberRowsInTable+1; i++) {
	          theTable.rows[i].style.display = 'none';
	      }
	      theTable.rows[0].style.display = '';//标题栏显示
	  }
	
	
	  function showPage() {//设置当前页数
	      pageNum.innerHTML = page;
	  }
	
	  function inforCount() {//设置总记录数
	      spanTotalInfor.innerHTML = numberRowsInTable;
	  }
	
	  //总共页数
	  function pageCount() {
	      var count = 0;
	      if (numberRowsInTable % pageSize != 0) count = 1;
	      return parseInt(numberRowsInTable / pageSize) + count;
	  }
	
	
	  //显示链接 link方法将相应的文字变成可点击翻页的  nolink方法将对应的文字变成不可点击的
	  function preLink() { spanPre.innerHTML = "<a href='javascript:pre();'>上一页</a>"; }
	  function preNoLink(){ spanPre.innerHTML = "上一页"; }
	
	  function nextLink() { spanNext.innerHTML = "<a href='javascript:next();'>下一页</a>"; }
	  function nextNoLink(){ spanNext.innerHTML = "下一页";}
	
	  function firstLink() { spanFirst.innerHTML = "<a href='javascript:first();'>首页</a>"; }
	  function firstNoLink(){ spanFirst.innerHTML = "首页";}
	
	  function lastLink() { spanLast.innerHTML = "<a href='javascript:last();'>尾页</a>"; }
	  function lastNoLink(){ spanLast.innerHTML = "尾页";}
	
	  //初始化表格
	  function hide() {
	      for (var i = pageSize + 1; i < numberRowsInTable+1 ; i++) {
	          theTable.rows[i].style.display = 'none';
	      }
	      theTable.rows[0].style.display = '';
	
	      inforCount();
	
	      totalPage.innerHTML = pageCount();
	      showPage();
	      pageNum2.value = page;
	
	      if (pageCount() > 1) {
	          nextLink();
	          lastLink();
	      }
	
	  }
	
	  hide();
	  
  </script>

四.前端代码中引用

     JS中 var theTable = document.getElementById("resultTable"); 中id为resultTable,应该与jsp中tableid保持一致,table下面动态引入分页工具条

   <div>
           <c:if test="${ re.id != null}">
                    <jsp:include page="/internationalFlight/common/pagingToolbar.jsp" ></jsp:include>
            </c:if>
    </div>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值