分页查询

分页查询算是比较常用的一个查询了
在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,一经查实,立即删除!

相关文章

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).转载于:…

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

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

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

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

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

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

精通 VC++ 实效编程280例 - 02 菜单和光标

菜单和关闭时重要的 Windows 资源之一。SDK 中&#xff0c;用 HCURSOR 和 HMENU 分别表示菜单和光标的句柄。MFC 中&#xff0c;CMenu 类封装了菜单的功能。 23 动态添加和删除菜单项 添加菜单项可以调用 CMenu::AppendMenu 或 CMenu::InserMenu 函数&#xff0c;删除菜单项可以…

我的osu游戏程序设计(oo)

osu是一款社区元素为主旨的音乐游戏,由澳大利亚人Dean Herbert (peppy)独立制作并运行. 游戏的方法简单,就是 1. 圈圈(Circle)&#xff1a;圈圈(Circle) 50。没打中显示X,并减少生命值。圈中序号的最后一个的300、100会显示为激300、喝100。2.滑条(Slider) : 在开始端点击按住不…

Android programming on Mac 之安装Eclipse

1.安装包在此链接下载&#xff1a; http://developer.android.com/sdk/index.html google GoAgent翻墙不好用&#xff0c;更新了host文件也不行&#xff0c;整了半天&#xff0c;还是一怒之下续签了vpn账号。早知如此&#xff0c;何必折腾。~~~~(>_<)~~~~ 更新文件时…

c++关于虚表的一些笔记

文章目录1、虚函数表指针2、多态构成的条件3、重载、重写、重定义 三者区别4、继承与虚函数5、单继承中的虚函数表无虚函数覆盖有虚函数覆盖6、单继承中的虚函数表无虚函数覆盖有虚函数覆盖参考看《深度探索c对象模型》的时候对虚表有了点疑惑&#xff0c;正好网上有些文章解除…

C语言技巧:把单一元素的数组放在末尾,struct可以拥有可变大小的数组

《C 对象模型》第19页有这样一句话 C程序员的巧计有时候却成为c程序员的陷阱。例如把单一元素的数组放在一个struct的末尾&#xff0c;于是每个struct objects可以拥有可变数组的数组&#xff1a; struct mumble {/* stuff */char pc[1]; };//从文件或标准输入装置中取得一个…

探讨C++ 变量生命周期、栈分配方式、类内存布局、Debug和Release程序的区别(二)...

看此文&#xff0c;务必需要先了解本文讨论的背景&#xff0c;不多说&#xff0c;给出链接&#xff1a; 探讨C 变量生命周期、栈分配方式、类内存布局、Debug和Release程序的区别&#xff08;一&#xff09; 本文会以此问题作为讨论的实例&#xff0c;来具体讨论以下四个问题&a…

后台系统可扩展性学习笔记(一)概要

文章目录系统大致架构可扩展性负载均衡器与会话保持引入冗余增强系统可用性缓存减轻数据库压力异步处理参考系统大致架构 当一个用户请求从客户端出发&#xff0c;经过网络传输&#xff0c;达到 Web 服务层&#xff0c;接着进入应用层&#xff0c;最后抵达数据层&#xff0c;它…

后台系统可扩展性学习笔记(二)权衡取舍

文章目录性能与可扩展性延迟与吞吐量可用性与一致性一致性模式可用性模式可用性衡量参考系统设计中也面临许多权衡取舍&#xff1a;性能与可扩展性延迟与吞吐量可用性与一致性 性能与可扩展性 可扩展&#xff0c;意味着服务能以加资源的方式成比例地提升性能&#xff0c;性能…

后台系统可扩展性学习笔记(三)DNS机制原理

文章目录DNS概念梳理域名基本概念资源记录基本概念路由策略DNS 域空间结构实现原理复制机制查询机制缓存机制参考DNS概念梳理 DNS&#xff08;Domain Name System&#xff09;相当于互联网的通讯录&#xff0c;能够把域名翻译成 IP 地址。 从技术角度来讲&#xff0c;DNS 是个…

后台系统可扩展性学习笔记(四)CDN机制原理

文章目录概念梳理CDN拓扑结构CDN内容分发方式架构原理工作原理实现原理概念梳理 CDN&#xff08;Content Delivery Network&#xff0c;内容分发网络&#xff09;是由分布在不同地理位置的代理服务器及其数据中心组成的网络&#xff0c;希望在空间距离上为用户就近提供服务&am…

后台系统可扩展性学习笔记(五)负载均衡

文章目录Load balancer(负载均衡器)请求传输拆解DNS 负载均衡客户端负载均衡OSI 七层模型回顾2 层、3 层负载均衡3/4 层负载均衡7 层负载均衡在 第一节谈到了系统的横向扩展在于从单机扩展到多机&#xff0c;那么面临的第一个问题就是这些机器如何协同工作&#xff0c;即如何调…

Struts2第一个工程helloStruts极其基本配置

前面已经准备好了Struts-2.3.15&#xff0c;现在就可以直接搭建Struts2的工程了。前面http://blog.csdn.net/huangchnegdada/article/details/9179041有对Struts-2.3.15的准备工作的详述。 首先打开MyEclispe新建一个Web Project&#xff0c;名字就叫Struts2_0100_Introduction…

后台系统可扩展性学习笔记(六)反向代理

文章目录Web代理服务反向代理反向代理作用Web代理服务 Web 代理服务指的是在客户端资源请求和提供这些资源的 Web 服务之间充当中介的角色&#xff0c;代理服务可以实现在客户端&#xff0c;或者从客户端到目标服务器中间的任意环节。 例如&#xff0c;客户端不直接向提供目标…

实验:sigsuspend(),sigprocmask()

实验&#xff1a;sigsuspend(),sigprocmask()源代码&#xff1a;/* * Program: pause_suspend.c * To test the difference between sigsuspend() and paus(). * Author: zsl * Date: 2014-10-17 * First release. * 参见网页&#xff1a;http://blog.csdn.net/liwentao1091/ar…

后台系统可扩展性学习笔记(七)Service Discovery与微服务

文章目录应用层微服务架构服务注册查询 Service Discovery客户端 Service DiscoveryDNS-SD DNS-based Service Discovery服务端 Service Discovery服务注册与注销自注册模式第三方注册模式总结参考应用层 在简单的 3 层结构中&#xff0c;Web 服务层既要处理请求&#xff0c;又…

很久没写代码了,这(那)几天真是累死了。。。先写一个幻方的程序吧

1 #include <stdio.h>2 #include <stdlib.h>3 #include <windows.h>4 5 #define EVEN_DOUBLE_4 4 //双偶的最基本类型&#xff0c;4阶双偶6 #define SCREEN_SIZE 19 //屏幕显示不变形的最大尺寸&#xff08;主要是因为窗口大小限制&#xff09;7 #defi…