• struts2 分页


    http://sonyfe25cp.javaeye.com/blog/263026

    分页模块在参考完无数个版本之后总算自己做出一个自己的版本了...

    Pager类:

    Java代码 复制代码
    1. package bit.dlde.marx.util;   
    2.   
    3. import java.math.*;   
    4.   
    5. public class NewPager {   
    6.     private int totalRows; //总行数   
    7.     private int pageSize = 10//每页显示的行数   
    8.     private int currentPage; //当前页号   
    9.     private int totalPages; //总页数   
    10.     private int startRow; //当前页在数据库中的起始行   
    11.        
    12.     public NewPager() {   
    13.     }   
    14.        
    15.     /**默认每页10个  
    16.      * @param _totalRows  
    17.      */  
    18.     public NewPager(int _totalRows) {   
    19.         totalRows = _totalRows;   
    20.         totalPages=totalRows/pageSize;   
    21. //        System.out.println("总共的页数:"+totalPages);   
    22.         int mod=totalRows%pageSize;   
    23.         if(mod>0){   
    24.             totalPages++;   
    25.         }   
    26.         currentPage = 1;   
    27.         startRow = 0;   
    28.     }   
    29.        
    30.        
    31.     /**可自定义每页显示多少数  
    32.      * @param _totalRows  
    33.      * @param _pageSize  
    34.      */  
    35.     public NewPager(int _totalRows, int _pageSize) {   
    36.         totalRows = _totalRows;   
    37.         pageSize = _pageSize;   
    38.         totalPages = totalRows / pageSize;   
    39.         // System.out.println("总共的页数:"+totalPages);   
    40.         int mod = totalRows % pageSize;   
    41.         if (mod > 0) {   
    42.             totalPages++;   
    43.         }   
    44.         currentPage = 1;   
    45.         startRow = 0;   
    46.     }   
    47.        
    48.       
    49.     public void first() {   
    50.         currentPage = 1;   
    51.         startRow = 0;   
    52.     }   
    53.     public void previous() {   
    54.         if (currentPage == 1) {   
    55.             return;   
    56.         }   
    57.         currentPage--;   
    58.         startRow = (currentPage - 1) * pageSize;   
    59.     }   
    60.     public void next() {   
    61.         if (currentPage < totalPages) {   
    62.             currentPage++;   
    63.         }   
    64.         startRow = (currentPage - 1) * pageSize;   
    65.     }   
    66.     public void last() {   
    67.         currentPage = totalPages;   
    68.         startRow = (currentPage - 1) * pageSize;   
    69.     }   
    70.     public void refresh(int _currentPage) {   
    71.         currentPage = _currentPage;   
    72.         if (currentPage > totalPages) {   
    73.             last();   
    74.         }   
    75.     }   
    76.        
    77.        
    78.        
    79.        
    80.        
    81.        
    82.        
    83.     public int getStartRow() {   
    84.         return startRow;   
    85.     }   
    86.     public int getTotalPages() {   
    87.         return totalPages;   
    88.     }   
    89.     public int getCurrentPage() {   
    90.         return currentPage;   
    91.     }   
    92.     public int getPageSize() {   
    93.         return pageSize;   
    94.     }   
    95.     public void setTotalRows(int totalRows) {   
    96.         this.totalRows = totalRows;   
    97.     }   
    98.     public void setStartRow(int startRow) {   
    99.         this.startRow = startRow;   
    100.     }   
    101.     public void setTotalPages(int totalPages) {   
    102.         this.totalPages = totalPages;   
    103.     }   
    104.     public void setCurrentPage(int currentPage) {   
    105.         this.currentPage = currentPage;   
    106.     }   
    107.     public void setPageSize(int pageSize) {   
    108.         this.pageSize = pageSize;   
    109.     }   
    110.     public int getTotalRows() {   
    111.         return totalRows;   
    112.     }   
    113. }  
    package bit.dlde.marx.util;
    
    import java.math.*;
    
    public class NewPager {
        private int totalRows; //总行数
        private int pageSize = 10; //每页显示的行数
        private int currentPage; //当前页号
        private int totalPages; //总页数
        private int startRow; //当前页在数据库中的起始行
        
        public NewPager() {
        }
        
        /**默认每页10个
         * @param _totalRows
         */
        public NewPager(int _totalRows) {
            totalRows = _totalRows;
            totalPages=totalRows/pageSize;
    //        System.out.println("总共的页数:"+totalPages);
            int mod=totalRows%pageSize;
            if(mod>0){
                totalPages++;
            }
            currentPage = 1;
            startRow = 0;
        }
        
        
        /**可自定义每页显示多少数
         * @param _totalRows
         * @param _pageSize
         */
        public NewPager(int _totalRows, int _pageSize) {
    		totalRows = _totalRows;
    		pageSize = _pageSize;
    		totalPages = totalRows / pageSize;
    		// System.out.println("总共的页数:"+totalPages);
    		int mod = totalRows % pageSize;
    		if (mod > 0) {
    			totalPages++;
    		}
    		currentPage = 1;
    		startRow = 0;
    	}
        
       
        public void first() {
            currentPage = 1;
            startRow = 0;
        }
        public void previous() {
            if (currentPage == 1) {
                return;
            }
            currentPage--;
            startRow = (currentPage - 1) * pageSize;
        }
        public void next() {
            if (currentPage < totalPages) {
                currentPage++;
            }
            startRow = (currentPage - 1) * pageSize;
        }
        public void last() {
            currentPage = totalPages;
            startRow = (currentPage - 1) * pageSize;
        }
        public void refresh(int _currentPage) {
            currentPage = _currentPage;
            if (currentPage > totalPages) {
                last();
            }
        }
        
        
        
        
        
        
        
        public int getStartRow() {
            return startRow;
        }
        public int getTotalPages() {
            return totalPages;
        }
        public int getCurrentPage() {
            return currentPage;
        }
        public int getPageSize() {
            return pageSize;
        }
        public void setTotalRows(int totalRows) {
            this.totalRows = totalRows;
        }
        public void setStartRow(int startRow) {
            this.startRow = startRow;
        }
        public void setTotalPages(int totalPages) {
            this.totalPages = totalPages;
        }
        public void setCurrentPage(int currentPage) {
            this.currentPage = currentPage;
        }
        public void setPageSize(int pageSize) {
            this.pageSize = pageSize;
        }
        public int getTotalRows() {
            return totalRows;
        }
    }
    



    PageService 类:

    Java代码 复制代码
    1. package bit.dlde.marx.util;   
    2.   
    3. public class NewPagerService {   
    4.     /**   
    5.      * 功能描述:使用默认参数的  
    6.      * <br>输入:  
    7.      * <br>输出:  
    8.      * <br>创建日期:Nov 6, 2008  
    9.     */  
    10.     public NewPager getPager(String currentPage,String pagerMethod,int totalRows) {   
    11.         //    定义pager对象,用于传到页面   
    12.         NewPager pager = new NewPager(totalRows);   
    13. //      System.out.println("执行到getPager了");   
    14.         //    如果当前页号为空,表示为首次查询该页   
    15.         //    如果不为空,则刷新pager对象,输入当前页号等信息   
    16.         if (currentPage != null) {   
    17.             pager.refresh(Integer.parseInt(currentPage));   
    18. //            System.out.println("确认完当前的currentPage");   
    19.         }else{   
    20. //          currentPage="1";   
    21.             pager.refresh(1);   
    22.         }   
    23.         //    获取当前执行的方法,首页,前一页,后一页,尾页。   
    24. //        System.out.println("当前要执行的页面动作为:"+pagerMethod);   
    25.         if (pagerMethod != null) {   
    26.             if (pagerMethod.equals("first")) {   
    27.                 pager.first();   
    28.             } else if (pagerMethod.equals("previous")) {   
    29.                 pager.previous();   
    30.             } else if (pagerMethod.equals("next")) {   
    31.                 pager.next();   
    32.             } else if (pagerMethod.equals("last")) {   
    33.                 pager.last();   
    34.             }   
    35.         }else{   
    36.             pager.first();   
    37.         }   
    38.         return pager;   
    39.     }   
    40.     /**   
    41.      * 功能描述:可自定义每页显示书目的  
    42.      * <br>输入:  
    43.      * <br>输出:  
    44.      * <br>创建日期:Nov 6, 2008  
    45.     */  
    46.     public NewPager getPager(String currentPage,String pagerMethod,int totalRows,int pageSize) {   
    47.         //    定义pager对象,用于传到页面   
    48.         NewPager pager = new NewPager(totalRows,pageSize);   
    49. //      System.out.println("执行到getPager了");   
    50.         //    如果当前页号为空,表示为首次查询该页   
    51.         //    如果不为空,则刷新pager对象,输入当前页号等信息   
    52.         if (currentPage != null) {   
    53.             pager.refresh(Integer.parseInt(currentPage));   
    54. //            System.out.println("确认完当前的currentPage");   
    55.         }else{   
    56. //          currentPage="1";   
    57.             pager.refresh(1);   
    58.         }   
    59.         //    获取当前执行的方法,首页,前一页,后一页,尾页。   
    60. //        System.out.println("当前要执行的页面动作为:"+pagerMethod);   
    61.         if (pagerMethod != null) {   
    62.             if (pagerMethod.equals("first")) {   
    63.                 pager.first();   
    64.             } else if (pagerMethod.equals("previous")) {   
    65.                 pager.previous();   
    66.             } else if (pagerMethod.equals("next")) {   
    67.                 pager.next();   
    68.             } else if (pagerMethod.equals("last")) {   
    69.                 pager.last();   
    70.             }   
    71.         }else{   
    72.             pager.first();   
    73.         }   
    74.         return pager;   
    75.     }   
    76.   
    77. }  
    package bit.dlde.marx.util;
    
    public class NewPagerService {
    	/** 
    	 * 功能描述:使用默认参数的
    	 * <br>输入:
    	 * <br>输出:
    	 * <br>创建日期:Nov 6, 2008
    	*/
    	public NewPager getPager(String currentPage,String pagerMethod,int totalRows) {
            //    定义pager对象,用于传到页面
    		NewPager pager = new NewPager(totalRows);
    //		System.out.println("执行到getPager了");
            //    如果当前页号为空,表示为首次查询该页
            //    如果不为空,则刷新pager对象,输入当前页号等信息
            if (currentPage != null) {
                pager.refresh(Integer.parseInt(currentPage));
    //            System.out.println("确认完当前的currentPage");
            }else{
    //        	currentPage="1";
            	pager.refresh(1);
            }
            //    获取当前执行的方法,首页,前一页,后一页,尾页。
    //        System.out.println("当前要执行的页面动作为:"+pagerMethod);
            if (pagerMethod != null) {
                if (pagerMethod.equals("first")) {
                    pager.first();
                } else if (pagerMethod.equals("previous")) {
                    pager.previous();
                } else if (pagerMethod.equals("next")) {
                    pager.next();
                } else if (pagerMethod.equals("last")) {
                    pager.last();
                }
            }else{
            	pager.first();
            }
            return pager;
        }
    	/** 
    	 * 功能描述:可自定义每页显示书目的
    	 * <br>输入:
    	 * <br>输出:
    	 * <br>创建日期:Nov 6, 2008
    	*/
    	public NewPager getPager(String currentPage,String pagerMethod,int totalRows,int pageSize) {
            //    定义pager对象,用于传到页面
    		NewPager pager = new NewPager(totalRows,pageSize);
    //		System.out.println("执行到getPager了");
            //    如果当前页号为空,表示为首次查询该页
            //    如果不为空,则刷新pager对象,输入当前页号等信息
            if (currentPage != null) {
                pager.refresh(Integer.parseInt(currentPage));
    //            System.out.println("确认完当前的currentPage");
            }else{
    //        	currentPage="1";
            	pager.refresh(1);
            }
            //    获取当前执行的方法,首页,前一页,后一页,尾页。
    //        System.out.println("当前要执行的页面动作为:"+pagerMethod);
            if (pagerMethod != null) {
                if (pagerMethod.equals("first")) {
                    pager.first();
                } else if (pagerMethod.equals("previous")) {
                    pager.previous();
                } else if (pagerMethod.equals("next")) {
                    pager.next();
                } else if (pagerMethod.equals("last")) {
                    pager.last();
                }
            }else{
            	pager.first();
            }
            return pager;
        }
    
    }
    
    



    调用示例:

    Java代码 复制代码
    1. /**   
    2.      * 功能描述:前台列表  
    3.      * <br>输入:  
    4.      * <br>输出:  
    5.      * <br>创建日期:Nov 6, 2008  
    6.     */  
    7.     public String ExpListForFront() throws Exception {   
    8.         int totalRow = expServ.getTotalRowsNum();   
    9.         System.out.println(totalRow+" :totalRow");   
    10.         pager = pagerService.getPager(this.getCurrentPage(), this  
    11.                 .getPagerMethod(), totalRow,36);//前台页面一页36个   
    12.         this.setCurrentPage(String.valueOf(pager.getCurrentPage()));   
    13.         this.setTotalRows(String.valueOf(totalRow));   
    14.         availableItems = expServ.getRows(pager.getPageSize(), pager.getStartRow());   
    15.         System.out.println("准备显示专家列表");   
    16.         List<Experts> explistemp = new ArrayList<Experts>();   
    17.         for (Experts es : availableItems) {   
    18.             es.setName(CharacterTrans.trans8859_1ToGBK(es.getName()));   
    19.                 es.setResume(CharacterTrans.trans8859_1ToGBK(es.getResume()));   
    20.                 es.setPhoto(CharacterTrans.trans8859_1ToGBK(es.getPhoto()));   
    21.                 es.setEditor(CharacterTrans.trans8859_1ToGBK(es.getEditor()));   
    22.                 es.getExpertType().setTempname(CharacterTrans.trans8859_1ToGBK(es.getExpertType().getName()));   
    23.             explistemp.add(es);   
    24.         }   
    25.         this.setItEx(explistemp.iterator());   
    26.         System.out.println("显示专家列表完毕");   
    27.         return SUCCESS;   
    28.     }  
    /** 
    	 * 功能描述:前台列表
    	 * <br>输入:
    	 * <br>输出:
    	 * <br>创建日期:Nov 6, 2008
    	*/
    	public String ExpListForFront() throws Exception {
    		int totalRow = expServ.getTotalRowsNum();
    		System.out.println(totalRow+" :totalRow");
    		pager = pagerService.getPager(this.getCurrentPage(), this
    				.getPagerMethod(), totalRow,36);//前台页面一页36个
    		this.setCurrentPage(String.valueOf(pager.getCurrentPage()));
    		this.setTotalRows(String.valueOf(totalRow));
    		availableItems = expServ.getRows(pager.getPageSize(), pager.getStartRow());
    		System.out.println("准备显示专家列表");
    		List<Experts> explistemp = new ArrayList<Experts>();
    		for (Experts es : availableItems) {
    			es.setName(CharacterTrans.trans8859_1ToGBK(es.getName()));
    				es.setResume(CharacterTrans.trans8859_1ToGBK(es.getResume()));
    				es.setPhoto(CharacterTrans.trans8859_1ToGBK(es.getPhoto()));
    				es.setEditor(CharacterTrans.trans8859_1ToGBK(es.getEditor()));
    				es.getExpertType().setTempname(CharacterTrans.trans8859_1ToGBK(es.getExpertType().getName()));
    			explistemp.add(es);
    		}
    		this.setItEx(explistemp.iterator());
    		System.out.println("显示专家列表完毕");
    		return SUCCESS;
    	}
    



    页面上设置:

    Java代码 复制代码
    1. <div id="pageflip">   
    2.                 共   
    3.                 <s:property value="totalRows" />   
    4.                 行&nbsp; 第   
    5.                 <s:property value="currentPage" />   
    6.                 页&nbsp; 共   
    7.                 <s:property value="pager.getTotalPages()" />   
    8.                 页&nbsp;   
    9.                 <a   
    10.                     href="<s:url value="expListForFront.action">   
    11.                          <s:param name="currentPage" value="currentPage"/>   
    12.                          <s:param name="pagerMethod" value="'first'"/>   
    13.                     </s:url>">首页</a>   
    14.                 <a   
    15.                     href="<s:url value="expListForFront.action">   
    16.                          <s:param name="currentPage" value="currentPage"/>   
    17.                          <s:param name="pagerMethod" value="'previous'"/>   
    18.                      </s:url>">上一页</a>   
    19.                 <a   
    20.                     href="<s:url value="expListForFront.action">   
    21.                          <s:param name="currentPage" value="currentPage"/>   
    22.                          <s:param name="pagerMethod" value="'next'"/>   
    23.                      </s:url>">下一页</a>   
    24.                 <a   
    25.                     href="<s:url value="expListForFront.action">   
    26.                          <s:param name="currentPage" value="currentPage"/>   
    27.                           <s:param name="pagerMethod" value="'last'"/>   
    28.                     </s:url>">尾页</a>   
    29.             </div>  
    <div id="pageflip">
    				共
    				<s:property value="totalRows" />
    				行&nbsp; 第
    				<s:property value="currentPage" />
    				页&nbsp; 共
    				<s:property value="pager.getTotalPages()" />
    				页&nbsp;
    				<a
    					href="<s:url value="expListForFront.action">
                   			 <s:param name="currentPage" value="currentPage"/>
                   			 <s:param name="pagerMethod" value="'first'"/>
                        </s:url>">首页</a>
    				<a
    					href="<s:url value="expListForFront.action">
                   			 <s:param name="currentPage" value="currentPage"/>
                   			 <s:param name="pagerMethod" value="'previous'"/>
               			 </s:url>">上一页</a>
    				<a
    					href="<s:url value="expListForFront.action">
                   			 <s:param name="currentPage" value="currentPage"/>
                  			 <s:param name="pagerMethod" value="'next'"/>
               			 </s:url>">下一页</a>
    				<a
    					href="<s:url value="expListForFront.action">
                   			 <s:param name="currentPage" value="currentPage"/>
                  			  <s:param name="pagerMethod" value="'last'"/>
                		</s:url>">尾页</a>
    			</div>
    



    这样就OK了...

  • 相关阅读:
    msyql多个or,and,
    mysql中 where in 用法详解
    history.back(-1)和history.go(-1)的区别
    经典 mysql 28道题
    企业案例(二):增量恢复案例
    企业案例(一):由于mysql sleep线程过多小故障
    mysql数据库恢复
    binlog介绍
    mysql 数据库备份
    docker入门与实践
  • 原文地址:https://www.cnblogs.com/studio313/p/1534878.html
Copyright © 2020-2023  润新知