• 分页查询


    分页查询算是比较常用的一个查询了
    在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 }
     
  • 相关阅读:
    嵌入式系统WinCE下应用程序GUI界面开发【转】
    pidstat 命令详解
    shell脚本检查是否存在tun0虚拟网卡,若不不存在服务器更改port,并重启服务器,客户端修改port,并重新启动客户端
    阿里云k8s部署zookeeper集群
    Kubernetes StatefulSet
    dubbo-admin管理平台搭建
    k8s pv,pvc无法删除问题
    Linux配置AndroidSDK&Jenkins远程部署
    CentOS的vsftp修改默认配置路径方法
    Java语法糖3:泛型
  • 原文地址:https://www.cnblogs.com/xy2401/p/3113535.html
Copyright © 2020-2023  润新知