分页查询

分页查询算是比较常用的一个查询了
在DAO层主要是查两个数据
第一个总条数
第二个要查询起始记录数到查询的条数
 
当第一次点击查询时候(非下一页时
Page类里面预设的就是 index就是0 pageSize是预设值
 
当点击下一页的时候 index 和 pageSize带的就是页面上面给的值了
 
分页的页面一般的构造是

一般的页面的样式是
上面是查询条件 下面是查询结果 再下面就是分页的内容了
 
-------------------------------------------------
查询条件1                     查询条件2          
查询条件3                     查询条件4         
                                        点击查询 
-------------------------------------------------
属性一   属性二   属性三   属性四   属性五   属性六
记录1    ......   ......   .....   ......   ...... 
记录2    ......   ......   .....   ......   ...... 
.....    ......   ......   .....   ......   ......
-------------------------------------------------
共n条数据 每页显示m条 当前x-y调    第x/y页,跳  
-------------------------------------------------
 
 
无论是点击上面的查询,还是下面的下一页,都是触发javascript函数,将from提交
所以from里面有两个隐藏的input
存放页号和页面大小
<input name= "page.pageNo"  id ="iPageNo" value= "1" type="hidden" />
<input name="page.pageSize"  id= "iPageSize" value=" ${page.pageSize}" type= "hidden" />
 
使用的Page 类
最重要的几个个属性
总条数,页的大小,当前页号
页面数据集合Collection
像其它属性都是可以根据这几个来计算的
记录开始位置,记录结束位置
是否有上一页,是否有下一页
Page类
 1 public class Page {
 2    
 3     private Integer pageNo ;    // 当前页号
 4     private Integer pageSize ;  // 每页记录条数
 5     private Boolean nextPage ;  // 是否有下一页
 6     private Boolean prePage ;   // 是否有上一页
 7     private int totalRecNum ;  // 总共有多少条记录
 8     private Integer totalPageNum ;//总共多少页
 9     private Collection pageContent ; // 该页的数据 (记录明细)
10     private Integer startIndex ; // 记录开始位置
11     private Integer endIndex ;   // 记录结束位置
12       
13      public Page () {
14           super();
15         pageNo =1;
16         pageSize =20;
17      }
18    
19      public Integer getPageNo () {
20           return pageNo;
21      }
22      public void setPageNo (Integer pageNo) {
23           this.pageNo = pageNo;
24      }
25      public Integer getPageSize () {
26           return pageSize;
27      }
28      public void setPageSize (Integer pageSize) {
29           this.pageSize = pageSize;
30      }
31    
32      public Boolean getNextPage () {
33           return pageNo<getTotalPageNum()?true:false;
34      }
35 
36      public Boolean getPrePage () {
37           return pageNo>1?true:false;
38      }
39 
40      public int getTotalRecNum () {
41           return totalRecNum;
42      }
43      public void setTotalRecNum (int totalRecNum ) {
44           this.totalRecNum = totalRecNum;
45      }
46    
47      public Integer getTotalPageNum () {
48           return totalRecNum%pageSize>0?(int )(totalRecNum/pageSize+1 ):(int)( totalRecNum/pageSize );
49      }
50 
51      public Collection getPageContent () {
52           return pageContent;
53      }
54    
55      public void setPageContent (Collection pageContent) {
56           this.pageContent = pageContent;
57      }
58   
59      public int getStartIndex ()
60      {
61           return pageSize*(pageNo-1 )+1;   // size:10 pageno:3   21
62      }
63   
64      public int getEndIndex ()
65      {
66           return ( pageSize*pageNo >this.totalRecNum)? (int)( this.totalRecNum ):(pageSize*pageNo);
67      }
68   
69 }
包含的分页页面
 1 <%@ page language="java"   pageEncoding="UTF-8" %>
 2 <%@taglib uri= "http://java.sun.com/jsp/jstl/core" prefix="c" %>
 3 <%
 4 String path = request.getContextPath();
 5 String basePath = request.getScheme()+"://" +request.getServerName()+":"+request.getServerPort()+path+ "/";
 6 %>
 7 
 8 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 9 <html>
10   <head >
11     <base href="<%= basePath%> ">
12    
13     <title >My JSP 'pageFloor.jsp' starting page</title>
14    
15     <meta http-equiv="pragma" content= "no-cache">
16     <meta http-equiv="cache-control" content="no-cache" >
17     <meta http-equiv="expires" content= "0">   
18     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3" >
19     <meta http-equiv="description" content= "This is my page">
20     <style type="text/css">
21       .linkspan{
22         text-decoration:none ;
23         cursor: pointer;
24        }
25        /* 设置分页的样式,使其不受全部的样式更改,而导致不统一 */
26        .paging{
27          font-size: 12px ;
28        }
29        /* table里面无数据的时候,下面的分页栏会和talbe的标题th挨的太紧
30               导致不美观,所以在table和分页栏总结加一个分割线HR */
31        .tbHR{
32           height: 1px;
33           border: none;
34           border-top: 1px dashed #CCCCCC ;
35         }
36     </style >
37   </head >
38  
39   <body >
40   <hr class="tbHR">
41   <div class="paging">
42     <span id="pageinfo">&nbsp; ${page.totalRecNum}&nbsp;&nbsp;,&nbsp;
43     
44     每页显示 <select id= "pageSize" onchange="changePageSize(value)" >
45                    <option value= "5" ${page.pageSize==5 ? "selected":"" }>5</ option><option value="10" ${page.pageSize==10 ? "selected":"" }> 10</ option>
46                    <option value= "20" ${page.pageSize==20 ? "selected":"" }>20</ option><option value="30" ${page.pageSize==30 ? "selected":"" }> 30</ option>
47                    <option value= "50" ${page.pageSize==50 ? "selected":"" } >50 </option>
48             </select>49     &nbsp;,&nbsp;
50     当前显示 &nbsp;${page.startIndex}&nbsp; -&nbsp; ${page.endIndex}&nbsp;</span>
51     
52          
53     <span style=" float: right;">&nbsp; ${page.pageNo}/${page.totalPageNum}&nbsp;&nbsp;&nbsp;
54          <c:if test= "${page.pageNo>1}">
55              <span class= "linkspan" onclick="doQuery(1)" >首页 </span> &nbsp;&nbsp;
56          </c:if>
57           <c:if test= "${page.prePage}">
58               <span class= "linkspan"  onclick="doQuery( ${page.pageNo-1})"> 上一页</span >&nbsp;&nbsp;
59          </c:if>
60           <c:if test= "${page.nextPage}">
61              <span class= "linkspan" onclick="doQuery( ${page.pageNo+1})"> 下一页</span >&nbsp;&nbsp;
62          </c:if>
63           <c:if test=" ${page.pageNo!=page.totalPageNum}">
64               <span class= "linkspan" onclick="doQuery( ${page.totalPageNum})"> 末页</span >&nbsp;&nbsp;
65          </c:if>&nbsp;&nbsp;
66       <input type="text" id= "pageNo" name ="pageNo" size=4    onkeypress="onlynumber();" />
67                            &nbsp;&nbsp;&nbsp;&nbsp;
68        <span class="linkspan" onclick="doQuery(document.getElementById('pageNo').value)" >跳转 </span>
69     </span >
70    </div >
71   </body >
72 </html>
 
Javascript 函数
这里还有一个问题,点击查询的时候,注意要设置页号为1,不然是带之前的页号,就会导致用户是一个新的查询,到的页面确实后几页这里为处理
 1 function doQuery(pageno){
 2 
 3   if( isNaN( pageno ) ){
 4       alert( "请输入数字" );
 5       ${ 'pageNo'} .select();        
 6        return;
 7     }
 8       
 9      if(pageno<1 || pageno>${page.totalPageNum} ){
10         alert( "页号"+pageno+"超出范围,有效范围:[1-${page.totalPageNum}]!" );
11         ${ 'pageNo' }.select();
12         return;
13      }
14      document.getElementById('iPageNo' ).value=pageno;
15      document.getElementById('iPageSize' ).value=document.getElementById('pageSize').value;
16     
17      var f=document.forms[0];
18       f.submit();
19 }
20 function changePageSize(value){
21      
22     var exdate=new Date(); //获得当天时间
23      exdate.setDate(exdate.getDate()+365); //当天时间+365天
24 
25      //设置cookie,这里是设置用户设置的Page的长度 
26      document.cookie="queryEmployeePageSize=" +value+";expires=" +exdate.toGMTString();
27       
28      document.getElementById('iPageSize' ).value=value;
29      document.forms[0].submit();
30 }
 

转载于:https://www.cnblogs.com/xy2401/archive/2013/06/02/3113535.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/376637.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TypeError: Object of type ‘datetime‘ is not JSON serializable

python中这个错误的原因是json.dumps无法对字典中的datetime时间格式数据进行转化&#xff0c;dumps的原功能是将dict转化为str格式&#xff0c;不支持转化时间. 所以请这样使用&#xff1a; json.dumps(response_data, defaultstr)

oracle问题

ORA-01031: insufficient privileges 用户没有权限&#xff0c;给它赋予角色转载于:https://www.cnblogs.com/50614090/p/3986880.html

me23n去价格

SELECT knumv kposn AS ebelp kschl kbetr kpein kwert INTO CORRESPONDING FIELDS OF TABLE gt_konv FROM konv FOR ALL ENTRIES IN gt_ekpo WHERE knumv gt_ekpo-knumv AND kinak EQ AND kschl IN (PB00,PBXX,P101).转载于:…

Fix “Windows cannot access the specified device path or file” Error

http://helpdeskgeek.com/help-desk/windows-cannot-access-the-specified-device-path-or-file/ Method 1 – Windows Server 2003 Terminal Services Firstly, if you’re running into this issue on a Windows Server box running Terminal Services, your problem can be …

使用Bootstrap-table创建表单,并且与flask后台进行数据交互

文章目录引用css和js使用htmljavascriptflaskmysql参考引用css和js Bootstrap-table为这些文件提供了 CDN 的支持&#xff0c;所以不需要下载.js .css文件就可以直接用了&#xff0c;十分方便 <!-- Latest compiled and minified CSS --> <link rel"stylesheet…

php编码规则(一)

---恢复内容开始--- <转载自己整理> GNU C 库&#xff08;GNU C Library&#xff0c;又称为glibc&#xff09;是一种按照LGPL许可协议发布的&#xff0c;公开源代码的&#xff0c;免费的&#xff0c;方便从网络下载的C的编译程序。 GNU C运行期库&#xff0c;是一种C函数…

重新想象 Windows 8.1 Store Apps (89) - 通信的新特性: 下载数据, 上传数据, 上传文件...

重新想象 Windows 8.1 Store Apps (89) - 通信的新特性: 下载数据, 上传数据, 上传文件 原文:重新想象 Windows 8.1 Store Apps (89) - 通信的新特性: 下载数据, 上传数据, 上传文件[源码下载] 重新想象 Windows 8.1 Store Apps (89) - 通信的新特性: 下载数据, 上传数据, 上传…

【经验贴】smartCarers在比赛后如何获取更好的发展

博主联系方式: QQ:1540984562 QQ交流群:892023501 群里会有往届的smarters和电赛选手,群里也会不时分享一些有用的资料,有问题可以在群里多问问。 由于最近专栏开了付费,群友让更新一些经验贴,于是有了这篇文章。 一般来说,比赛完了之后是大二结束的暑假,此时有这么几条…

isset()和empty()到底区别是什么。

一招鲜吃遍天&#xff0c;自从看了燕十八关于PHP变量内部机制的那课&#xff0c;解释了一些很久的疑惑&#xff0c;知其然还知其所以然&#xff0c;果然是学习的最佳途径&#xff0c;比背下来要重要N倍。 我们知道一个变量有变量表的位置&#xff0c;然后他指向自己的内存地址&…

html清除图片缓存

img.src ?t(new Date()); 如&#xff1a; <img id "5" src"../../../pics/prod_146/__INLINE__user_nums_cmp_146.png?t"(new Date()) width"1024">

分享下自己编译 XBMC 的过程(zhuan)

刷YunOS赢魅族MX3首先要感谢下网上其他网友的经验&#xff0c;没有这些经验有的问题还是不太好解决&#xff5e; 先介绍下编译环境&#xff0c;操作系统是 CentOS 6.5 64位 (最小桌面版本安装&#xff0c;除了最基本的组件外&#xff0c;类似 java 什么的都没有安装)&#xff0…

使用Xcode和Instruments调试解决iOS内存泄露

虽然iOS 5.0版本之后加入了ARC机制&#xff0c;但由于相互引用关系比较复杂时&#xff0c;内存泄露还是可能存在。所以了解原理很重要。 这里讲述在没有ARC的情况下&#xff0c;如何使用Instruments来查找程序中的内存泄露&#xff0c;以及NSZombieEnabled设置的使用。 本文假设…

0755、0644、0600 linux文件权限

0755->即用户具有读/写/执行权限&#xff0c;组用户和其它用户具有读写权限&#xff1b; 0644->即用户具有读写权限&#xff0c;组用户和其它用户具有只读权限&#xff1b; 0600->仅拥有者具有文件的读取和写入权限

[Android] (在ScrollView里嵌套view)重叠view里面的onTouchEvent的调用方法

在我前面的自定义裁剪窗口的代码中&#xff0c;我把裁剪的view放在了大的scrollview里&#xff0c;这样就出现了程序只能触发scrollview&#xff0c;无法操作我的裁剪窗口。所以我加了那篇博客下面最后两段代码。其实我遇到这个问题的时候是在一个scrollview里添加了一个Editte…

带点击事件的Spinner

最近有一个蛋疼的需求&#xff0c;在下拉框中&#xff0c;如果只有一个值&#xff0c;默认显示出来&#xff0c;有两个或者没有显示请选择&#xff0c;没有点击不弹框&#xff0c;但是要清空&#xff0c;两个点击开要移掉请选择字样的项 本来以为很简单&#xff0c;后来发现没有…

linux进程间通信快速入门【二】:共享内存编程(mmap、XSI、POSIX)

文章目录mmap内存共享映射XSI共享内存POSIX共享内存参考使用文件或管道进行进程间通信会有很多局限性&#xff0c;比如效率问题以及数据处理使用文件描述符而不如内存地址访问方便&#xff0c;于是多个进程以共享内存的方式进行通信就成了很自然要实现的IPC方案。LInux给我们提…

ROBOTS.TXT屏蔽笔记、代码、示例大全

自己网站的ROBOTS.TXT屏蔽的记录&#xff0c;以及一些代码和示例&#xff1a; 屏蔽后台目录&#xff0c;为了安全&#xff0c;做双层管理后台目录/a/xxxx/&#xff0c;蜘蛛屏蔽/a/&#xff0c;既不透露后台路径&#xff0c;也屏蔽蜘蛛爬后台目录 缓存&#xff0c;阻止蜘蛛爬静态…

五大主流浏览器 HTML5 和 CSS3 兼容性比较

转眼又已过去了一年&#xff0c;在这一年里&#xff0c;Firefox 和 Chrome 在拼升级&#xff0c;版本号不断飙升&#xff1b;IE10 随着 Windows 8 在去年10月底正式发布&#xff0c;在 JavaScript 性能和对 HTML5 和 CSS3 的支持方面让人眼前一亮。这篇文章给大家带来《五大主流…

Ubuntu下将Sublime Text设置为默认编辑器

转自将Sublime Text 2设置为默认编辑器 修改defaults.list 编辑/etc/gnome/default.list文件&#xff0c;将其中的所有gedit.desktop替换为sublime_text.desktop。 sublime_text.desktop在/opt/sublime_text目录下&#xff0c;使用ls -al *sublime*命令查看具体文件名。 转载于…

python获取最近N天工作日列表、节假日列表

# 获取最近两周工作日列表、节假日列表 import datetime import chinese_calendar import time import pandas as pd# 将时间戳转换成格式化日期 def timestamp_to_str(timestampNone, format%Y-%m-%d %H:%M:%S):if timestamp:time_tuple time.localtime(timestamp) # 把时间…