精华内容
下载资源
问答
  • 手写分页工具类——Java

    千次阅读 2018-08-22 21:06:09
    今天闲来没事,写了一个页面的分页工具类,具有很好的兼容性与实用性哦。 不管怎么样,先来瞧一瞧: package com.bw.utils; /** * 分页工具类 * * @author H.ros * */ public class PageUtils2 { // 当前...

       今天闲来没事,写了一个页面的分页工具类,具有很好的兼容性与实用性哦。

    不管怎么样,先来瞧一瞧:

    package com.bw.utils;
    
    /**
     * 分页工具类
     * 
     * @author H.ros
     *
     */
    public class PageUtils2 {
    	// 当前页(从页面获取的当前页码,未计算)
    	private int currentPage;
    	// 前一页
    	private int prevPage;
    	// 下一页
    	private int nextPage;
    	// 尾页
    	private int lastPage;
    	// 总记录数
    	private int count;
    	// 每页的条数
    	private int pageSize = 3;
    	// 分页计入数(使用时调用的初始页,计算后)
    	private int pageRecord;
    	// 页面分页模型(传入页面使用的DOM)
    	private String page;
    
    	// 有参构造器
    	public PageUtils2(String currentPage, int count, int pageSize) {
    		init(currentPage, count, pageSize);
    		initLastPage();
    		initCurrentPage();
    		initPrevPage();
    		initNextPage();
    		initPageRecord();
    		initPage();
    	}
    
    	// 初始化三个重要元素
    	private void init(String currentPage, int count, int pageSize) {
    		if (currentPage == null || currentPage == "" || currentPage == "0") {
    			currentPage = "1";
    		}
    		this.currentPage = Integer.parseInt(currentPage);
    		this.count = count;
    		this.pageSize = pageSize;
    	}
    
    	// 初始化尾页
    	private void initLastPage() {
    		if (count % pageSize == 0) {
    			lastPage = count / pageSize;
    		} else {
    			lastPage = count / pageSize + 1;
    		}
    	}
    
    	// 初始化并矫正当前页(防止外部访问出错)
    	private void initCurrentPage() {
    		if (currentPage < 1) {
    			currentPage = 1;
    		} else if (currentPage > lastPage) {
    			currentPage = lastPage;
    		}
    	}
    
    	// 初始化上一页
    	private void initPrevPage() {
    		if (currentPage != 1) {
    			prevPage = currentPage - 1;
    		}else{
    			prevPage = 1;
    		}
    	}
    
    	// 初始化下一页
    	private void initNextPage() {
    		if (currentPage != lastPage) {
    			nextPage = currentPage + 1;
    		}else{
    			nextPage = lastPage;
    		}
    	}
    
    	// 初始化分页计入数
    	private void initPageRecord() {
    		pageRecord = (currentPage - 1) * pageSize;
            if(pageRecord < 0){
                pageRecord = 0;
            }
    	}
    
    	// 初始化页面分页模型(按键中的class属性是bootstrap的样式)
    	private void initPage() {
    		page = "第" + currentPage + "/" + lastPage + "页,共" + count + "条记录。";
    		page += "<input type='button' value='首页' onclick='page(1)' class='btn btn-sm'/>";
    		page += "<input type='button' value='上一页' onclick='page(" + prevPage + ")' class='btn btn-sm'/>";
    		page += "<input type='button' value='下一页' onclick='page(" + nextPage + ")' class='btn btn-sm'/>";
    		page += "<input type='button' value='尾页' onclick='page(" + lastPage + ")' class='btn btn-sm'/>";
    	}
    
    	/*
    	 * 对外访问通道
    	 */
    	public int getCurrentPage() {
    		return currentPage;
    	}
    
    	public int getPrevPage() {
    		return prevPage;
    	}
    
    	public int getNextPage() {
    		return nextPage;
    	}
    
    	public int getLastPage() {
    		return lastPage;
    	}
    
    	public int getCount() {
    		return count;
    	}
    
    	public int getPageSize() {
    		return pageSize;
    	}
    
    	public int getPageRecord() {
    		return pageRecord;
    	}
    
    	public String getPage() {
    		return page;
    	}
    
    }
    

    使用方法:

    里面很多的地方都会计算好,使用时只用传入三个参数:

    //currentPage是从前台传来的当前页码,count是数据的总统计数,pageSize是每页显示的条数,
    //count必须是数据中的查询结果哦。这样才能与前台保持页码一致。
    PageUtils util = new PageUtils(currentPage, count, pageSize);
    

     然后直接将它的一个Page属性传入前台页面就行:

    mv.addObject("page", util.getPage());

    在前台页面直接用EL表达式接收解析:

    ${page}

     在js中要设置一个函数:

    function page(){}
    //因为工具类中添加的是onclick的js点击事件,我们必须使用js的一个函数来进行后台处理;
    //如果不想使用,在工具类中删除即可。

     

    若有不对的地方,还望大神们不吝赐教。

    展开全文
  • 主要为大家详细介绍了java web手写实现分页功能的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 手写Java分页模块

    2017-12-08 01:39:00
    web层的servlet 1 package web;... 3 import java.io.IOException; 4 import java.sql.SQLException; 5 import java.util.List; 6 7 import javax.servlet.ServletException; 8 import javax.se...
    web层的servlet

    1
    package web; 2 3 import java.io.IOException; 4 import java.sql.SQLException; 5 import java.util.List; 6 7 import javax.servlet.ServletException; 8 import javax.servlet.http.HttpServlet; 9 import javax.servlet.http.HttpServletRequest; 10 import javax.servlet.http.HttpServletResponse; 11 12 import domain.Product; 13 import service.ProductService; 14 import vo.PageBean; 15 16 public class ProductListServlet extends HttpServlet { 17 18 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 19 ProductService service = new ProductService(); 20 // 模拟当前页为1 21 String currentPageStr = request.getParameter("currentPage"); 22 if(currentPageStr==null)currentPageStr="1"; 23 int currentPage=Integer.parseInt(currentPageStr); 24 // 模拟每页显示12条 25 int currentCount=12; 26 PageBean<Product> pageBean =null; 27 try { 28 pageBean = service.findPageBean(currentPage,currentCount); 29 } catch (SQLException e) { 30 e.printStackTrace(); 31 } 32 /** 33 * 当前页面:currentPage 34 * 当前页面的条数:current 35 * 数据总页数:totalPage 36 * 数据总条数:totalCount 37 * 每页数据集合:productList 38 */ 39 40 request.setAttribute("pageBean", pageBean); 41 request.getRequestDispatcher("/product_list.jsp").forward(request, response); 42 43 44 } 45 46 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 47 doGet(request, response); 48 } 49 }

      service层

     1 package service;
     2 
     3 import java.sql.SQLException;
     4 import java.util.ArrayList;
     5 import java.util.List;
     6 
     7 import dao.ProductDao;
     8 import domain.Product;
     9 import vo.PageBean;
    10 
    11 public class ProductService {
    12 
    13     public List<Product> findAllProduct() throws SQLException {
    14     ProductDao dao = new ProductDao();
    15     
    16         return dao.findAllProduct();
    17     }
    18 
    19     public PageBean findPageBean(int currentPage,int currentCount) throws SQLException {
    20         ProductDao dao = new ProductDao();
    21         
    22         //想办法封装pageBean并返回
    23         PageBean pageBean = new PageBean();
    24         //1.当前页    private int currentPage;
    25         pageBean.setCurrentPage(currentPage);
    26         
    27         //2.当前显示条数   private int currentCount;
    28         pageBean.setCurrentCount(currentCount);
    29         //3.总条数    private     int totalCount;
    30         int totalCount = dao.getTotalCount();
    31         pageBean.setTotalCount(totalCount);
    32         //4.总页数    private int totalPage;
    33         int totalPage = (int)Math.ceil(1.0*totalCount/currentCount);
    34         pageBean.setTotalPage(totalPage);
    35         //5.从第几条数据开始     int index
    36         int index = (currentPage-1)*currentCount;
    37         //6.每页显示的数据      private List<T> productList = new ArrayList();
    38         List<Product> productList = dao.findProductListForPageBean(index,currentCount); 
    39         pageBean.setProductList(productList);
    40     
    41         return pageBean;
    42     }
    43 
    44 }

      dao层

     

    package dao;
    
    import java.sql.SQLException;
    import java.util.List;
    
    import org.apache.commons.dbutils.QueryRunner;
    import org.apache.commons.dbutils.handlers.BeanListHandler;
    import org.apache.commons.dbutils.handlers.ScalarHandler;
    
    import domain.Product;
    import utils.MyDataSourceUtils;
    
    public class ProductDao {
    
        public List<Product> findAllProduct() throws SQLException {
        return new QueryRunner(MyDataSourceUtils.getDataSource()).query("select * from product",new BeanListHandler<Product>(Product.class));
            
        }
        //    获得全部商品条数
        public int getTotalCount() throws SQLException {
            QueryRunner runner = new QueryRunner(MyDataSourceUtils.getDataSource());
            String sql = "select count(*) from product";
            Long query = (Long)runner.query(sql,new ScalarHandler());
            return query.intValue();
        }
        //获取分页的商品数据
        public List<Product> findProductListForPageBean(int index,int currentCount) throws SQLException {
            QueryRunner runner = new QueryRunner(MyDataSourceUtils.getDataSource());
            String sql = "select * from product limit ?,?";
            List<Product> productList=runner.query(sql, new BeanListHandler<Product>(Product.class),index,currentCount);        
            return productList;
        }
    
    }

     

      jsp页面

      1 <%@ page language="java" contentType="text/html; charset=UTF-8"
      2     pageEncoding="UTF-8"%>
      3 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
      4 <!DOCTYPE html>
      5 <html>
      6 <head>
      7 <meta name="viewport" content="width=device-width, initial-scale=1">
      8 <title>会员登录</title>
      9 <link rel="stylesheet" href="css/bootstrap.min.css" type="text/css" />
     10 <script src="js/jquery-1.11.3.min.js" type="text/javascript"></script>
     11 <script src="js/bootstrap.min.js" type="text/javascript"></script>
     12 <!-- 引入自定义css文件 style.css -->
     13 <link rel="stylesheet" href="css/style.css" type="text/css" />
     14 
     15 <style>
     16 body {
     17     margin-top: 20px;
     18     margin: 0 auto;
     19     width: 100%;
     20 }
     21 
     22 .carousel-inner .item img {
     23     width: 100%;
     24     height: 300px;
     25 }
     26 </style>
     27 </head>
     28 
     29 <body>
     30 
     31 
     32     <!-- 引入header.jsp -->
     33     <jsp:include page="/header.jsp"></jsp:include>
     34 
     35 
     36     <div class="row" style="width: 1210px; margin: 0 auto;">
     37         <div class="col-md-12">
     38             <ol class="breadcrumb">
     39                 <li><a href="#">首页</a></li>
     40             </ol>
     41         </div>
     42         <c:forEach items="${pageBean.productList}" var="product">
     43             <div class="col-md-2" style="height:250px">
     44                 <a href="product_info.htm"> <img
     45                     src="${pageContext.request.contextPath}/${product.pimage}"
     46                     width="170" height="170" style="display: inline-block;">
     47                 </a>
     48                 <p>
     49                     <a href="product_info.html" style='color: green'>${product.pname}</a>
     50                 </p>
     51                 <p>
     52                     <font color="#FF0000">商城价:&yen;${product.shop_price}</font>
     53                 </p>
     54             </div>
     55 
     56 
     57 
     58         </c:forEach>
     59         
     60 
     61         
     62 
     63     </div>
     64 
     65     <!--分页 -->
     66     <div style="width: 380px; margin: 0 auto; margin-top: 50px;">
     67         <ul class="pagination" style="text-align: center; margin-top: 10px;">
     68             
     69             <c:if test="${pageBean.currentPage==1 }">
     70                 <li class="disabled">
     71                     <a href="javascript:void(0);" aria-label="Previous">
     72                         <span aria-hidden="true">&laquo;</span>
     73                     </a>
     74                 </li>
     75             </c:if>
     76             
     77             <c:if test="${pageBean.currentPage!=1 }">
     78                 <li >
     79                     <a href="${pageContext.request.contextPath }/productList?currentPage=${pageBean.currentPage-1}" aria-label="Previous">
     80                         <span aria-hidden="true">&laquo;</span>
     81                     </a>
     82                 </li>
     83             </c:if>
     84             
     85             <c:forEach begin="1" end="${pageBean.totalPage}" var="page">
     86                 <c:if test="${page!=pageBean.currentPage}">
     87                     <li><a href="${pageContext.request.contextPath }/productList?currentPage=${page}">${page}</a></li>
     88                 </c:if> 
     89                 <c:if test="${page==pageBean.currentPage}">
     90                     <li class="active"><a href="javascript:void(0);">${page}</a></li>
     91                 </c:if>
     92                 
     93             </c:forEach>
     94             <c:if test="${pageBean.currentPage!=pageBean.totalPage}">
     95                 <li>
     96                     <a href="${pageContext.request.contextPath }/productList?currentPage=${pageBean.currentPage+1}" aria-label="Next"> 
     97                         <span aria-hidden="true">&raquo;</span>
     98                     </a>
     99                 </li>
    100             </c:if>
    101             <c:if test="${pageBean.currentPage==pageBean.totalPage}">
    102                 <li class="disabled">
    103                     <a href="javascript:void(0);" aria-label="Next"> 
    104                         <span aria-hidden="true">&raquo;</span>
    105                     </a>
    106                 </li>
    107             </c:if>
    108             
    109             
    110             
    111             
    112             <!-- <li class="disabled"><a href="#" aria-label="Previous"><span
    113                     aria-hidden="true">&laquo;</span></a></li>
    114             <li class="active"><a href="#">1</a></li>
    115             <li><a href="#">2</a></li>
    116             <li><a href="#">3</a></li>
    117             <li><a href="#">4</a></li>
    118             <li><a href="#">5</a></li>
    119             <li><a href="#">6</a></li>
    120             <li><a href="#">7</a></li>
    121             <li><a href="#">8</a></li>
    122             <li><a href="#">9</a></li>
    123             <li><a href="#" aria-label="Next"> <span aria-hidden="true">&raquo;</span>
    124             </a></li> -->
    125         </ul>
    126     </div>
    127     <!-- 分页结束 -->
    128 
    129     <!--商品浏览记录-->
    130     <div
    131         style="width: 1210px; margin: 0 auto; padding: 0 9px; border: 1px solid #ddd; border-top: 2px solid #999; height: 246px;">
    132 
    133         <h4 style="width: 50%; float: left; font: 14px/30px 微软雅黑">浏览记录</h4>
    134         <div style="width: 50%; float: right; text-align: right;">
    135             <a href="">more</a>
    136         </div>
    137         <div style="clear: both;"></div>
    138 
    139         <div style="overflow: hidden;">
    140 
    141             <ul style="list-style: none;">
    142                 <li
    143                     style="width: 150px; height: 216; float: left; margin: 0 8px 0 0; padding: 0 18px 15px; text-align: center;"><img
    144                     src="products/1/cs10001.jpg" width="130px" height="130px" /></li>
    145             </ul>
    146 
    147         </div>
    148     </div>
    149 
    150 
    151     <!-- 引入footer.jsp -->
    152     <jsp:include page="/footer.jsp"></jsp:include>
    153 
    154 </body>
    155 
    156 </html>

    pagebean

    package vo;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import domain.Product;
    
    public class PageBean<T> {
        //当前页
        private int currentPage;
        //当前显示条数
        private int currentCount;
        
        
        //总页数
        private int totalPage;
        //总条数
        private int totalCount;
        
        
        //每页显示的数据
        private List<T> productList = new ArrayList();
    
    
        public int getCurrentPage() {
            return currentPage;
        }
    
    
        public void setCurrentPage(int currentPage) {
            this.currentPage = currentPage;
        }
    
    
        public int getCurrentCount() {
            return currentCount;
        }
    
    
        public void setCurrentCount(int currentCount) {
            this.currentCount = currentCount;
        }
    
    
        public int getTotalPage() {
            return totalPage;
        }
    
    
        public void setTotalPage(int totalPage) {
            this.totalPage = totalPage;
        }
    
    
        public int getTotalCount() {
            return totalCount;
        }
    
    
        public void setTotalCount(int totalCount) {
            this.totalCount = totalCount;
        }
    
    
        public List<T> getProductList() {
            return productList;
        }
    
    
        public void setProductList(List<T> productList) {
            this.productList = productList;
        }
        
        
        
        
    }

     

    转载于:https://www.cnblogs.com/lyjblogs/p/8001770.html

    展开全文
  • JavaWeb手写分页方法

    2019-11-01 15:47:45
    如果jpa的分页方法太复杂,可以使用自己手写一个分页方法也很方便。 package com.screenshot.autotestplatform.utils; import java.util.Collection; import java.util.List; import java.util.Set; import java....

    如果jpa的分页方法太复杂,可以使用自己手写一个分页方法也很方便。

    package com.screenshot.autotestplatform.utils;
    
    import java.util.Collection;
    import java.util.List;
    import java.util.Set;
    import java.util.stream.Collectors;
    
    public class PageUtil {
    
        /**
         * 根据总数计算总页数
         *
         * @param totalCount 总共的数据数
         * @param pageSize   每页展示的数据个数
         * @return 一共有多少页
         */
        public static int getTotalPage(int totalCount, int pageSize) {
    
            return cn.hutool.core.util.PageUtil.totalPage(totalCount, pageSize);
    
        }
    
        /**
         * 该集合进行分页的总页数
         *
         * @param collection 需要分页显示的集合
         * @param pageSize   每页展示的数据个数
         * @return 一共多少页
         */
        public static int getTotalPage(Collection collection, int pageSize) {
    
            return getTotalPage(collection.size(), pageSize);
    
        }
    
    
        public static <E> List<E> getPageData(List<E> list, int page, int pageSize) {
    
            int[] ints = transToStartEnd(list, page, pageSize);
    
            return list.stream().limit(ints[1]).skip(ints[0]).collect(Collectors.toList());
        }
    
    
        public static <E> Set<E> getPageData(Set<E> set, int page, int pageSize) {
            int[] ints = transToStartEnd(set, page, pageSize);
    
            return set.stream().limit(ints[1]).skip(ints[0]).collect(Collectors.toSet());
        }
    
        //
        private static int[] transToStartEnd(Collection collection, int page, int pageSize) {
    
            int size = collection.size();
            //总共分页数
            int totalPage = getTotalPage(collection, pageSize);
            if (page < 0) {
                page = 0;
            }
    
            if (page > totalPage) {
                page = totalPage;
            }
            int[] ints = cn.hutool.core.util.PageUtil.transToStartEnd(page, pageSize);
            int begin = ints[0];
            int end = ints[1];
    
            if (end > size) {
                end = size;
            }
    
            return new int[]{begin, end};
    
        }
    
    
    }
    
    展开全文
  • List<String> iconList = Arrays.asList(icons); int pages = iconList.size() % pageSize == 0 ? (iconList.size() / pageSize) : (iconList.size() / pageSize) + 1; if (StringUtils.isNotBlank(title)) { ...
  • 手写简单Java分页判断

    2014-08-25 16:18:32
    int pageNums = 1; int numPerPage = 5; long n = pushManagerService.getHouseCount(pushMap); int count = (int) n; if (pr != null &amp;&amp; !pr.equals("")) { //pr 为jsp传过来的页码...pa...

                            int pageNums = 1;
    int numPerPage = 5;
    long n = pushManagerService.getHouseCount(pushMap);
    int count = (int) n;
    if (pr != null && !pr.equals("")) {    //pr 为jsp传过来的页码
    pageNums = Integer.parseInt(pr);
    }
    int pagecount = (count + numPerPage - 1) / numPerPage;
    if (pageNums <= 1) {
    pageNums = 1;
    }
    if (pageNums >= pagecount) {
    pageNums = pagecount;
    }
    if (count == 0) {
    pageNums = 1;

    }

    List<Map> pushList=pushManagerService.getselectPushHouseList(pushMap,"sortValue",pageNums(当前页),numPerPage(每页显示的记录));

       

    展开全文
  • public PageBean<Customer> findAll(int pc, int ps) throws SQLException { String sql = "select count(*) from t_customer"; int tr = ((Number)qr.query(sql, new ScalarHandler())).intValue();...
  • Mybatis手写分页插件

    2021-04-25 15:19:52
    Mybatis提供的RowBounds是基于第一次查询结果再分页的,也就是先让SQL查询出所有记录,然后分页,显然性能不高。 插件的主要原理就是在mybatis执行sql时修改sql语句 首先为了扩展性,定义一个分页参数Pojo package ...
  • Java 手写一个SQL分页

    千次阅读 2018-07-27 20:57:23
    Java手写一个类似PageHelper的分页SQL 目前分页插件众所周知的莫过于和mybatis完美融合的PageHelper了,简单两行代码就实现了sql分页,配合PageInfo类,将数据总数量,页数页码以及分页结果集等前端需要的信息都...
  • Java手写一个简单分页

    2019-10-23 09:59:03
    有时候我们需要对数据进行分页操作,比如一批数据id需要调接口批量查询,考虑到接口性能,通常不会一次查很多条数据,这时就可手动分页查询。 直接来看例子: public class PagingTest { public static void main...
  • springMVC手写分页查询

    2016-11-08 18:57:00
    package com.neuedu.java7.baen; public class Page { private int currentPage = 1; //当前页数 private int totalPages; //总页数 private int total; //记录总行数 private ...
  • Mybatis手写分页插件 本篇文章是通过看视频学习总结的内容, 如有错误的地方请谅解,并联系博主及时修改,谢谢您的阅读. 官网的解释 mybatis 官网 前言: 在官网中描述,Mybatis只支持拦截四大对象Executor、...
  • @Service public class OrderServiceImpl implements OrderService{ @Autowired OrderMapper orderMapper; public QueryResult queryOrder(QueryOrder queryOrder) { QueryResult result = new QueryResult...
  • jsp/main.jsp,发出请求 <a href="${APP_PATH}/user/index.do"><i class="glyphicon glyphicon-user"></i> 用户维护<...import java.util.List; public class Page { private I...
  • jsp/main.jsp,发出请求 <a href="${APP_PATH}/user/toIndex.do"><i class="glyphicon glyphicon-user"></i> 用户维护<...import java.util.List; public class Page { private In...
  • 分页原理就是在拦截器中先拿到旧的SQL,然后拼接limit语句让Mybatis继续处理。 举个列子,你准备去一家工厂,但是门口有个大爷把你拦下,让你必须套个脚套才可以进入,于是你套上了脚套包裹了自己...
  • java分页

    2017-12-21 08:06:27
    java分页
  • 2020.9.30 一、业务场景 先从播放时长表(play_time_table)中根据用户号(user_id)查出已观看视频总长度(按照任务号task_...由于对jpa不太熟悉,为了先实现需求,就用原生sql、手写分页实现了;如果可以的话还需要修改。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,030
精华内容 2,012
关键字:

手写分页java

java 订阅