• JSP如何实现分页功能(分页功能源代码分享)
  • 发布于 1周前
  • 32 热度
    0 评论

分页功能是我们日常开发中最常见的功能,但是很多初学者对于这种最为常见的分页功能却不知道该如何实现,今天我们就把我们实际项目中用到的分页代码分享出来,希望对于那些还不知道如何写分页代码的初学者有所帮助。

分页被引用页面 standard.jsp

<!-- 分页在底端被引用页面 -->
<!-- standard.jsp  -->
 
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 
 
总 ${page.totalCount} 条&nbsp; 
每页 ${page.pageSize} 条&nbsp; 
总 ${page.pageCount} 页 &nbsp; 
第 ${page.pageNow} 页&nbsp; &nbsp; &nbsp; 
 
<c:if test="${page.pageNow==1}">首页</c:if>
<c:if test="${page.pageNow!=1}"><a href="${pageContext.request.contextPath}${page.pageURL}?${page.fuSeaPara}&page.pageNow=1&page.pageSize=${page.pageSize}">首页</a></c:if>
&nbsp;
<c:if test="${page.pageNow==1}">上一页</c:if>
<c:if test="${page.pageNow!=1}"><a href="${pageContext.request.contextPath}${page.pageURL}?${page.fuSeaPara}&page.pageNow=${page.pageNow-1}&page.pageSize=${page.pageSize}">上一页</a></c:if>
&nbsp; 第<select onchange="location.href='${pageContext.request.contextPath}${page.pageURL}?${page.fuSeaPara}&page.pageNow='+this.value">
    <c:forEach var="selectvalue" begin="1" end="${page.pageCount}" step="1">
        <option value="${selectvalue}" ${page.pageNow eq selectvalue ?"selected='selected'":""}>
            ${selectvalue}   
        </option>
    </c:forEach>
</select>
页 
&nbsp;
<c:if test="${page.pageNow==page.pageCount}">下一页</c:if>
 
<c:if test="${page.pageNow!=page.pageCount}"><a class="nextPage" href="${pageContext.request.contextPath}${page.pageURL}?${page.fuSeaPara}&page.pageNow=${page.pageNow+1}&page.pageSize=${page.pageSize}" >下一页</a></c:if>
&nbsp;
<c:if test="${page.pageNow==page.pageCount}">尾页</c:if>
<c:if test="${page.pageNow!=page.pageCount}"><a href="${pageContext.request.contextPath}${page.pageURL}?${page.fuSeaPara}&page.pageNow=${page.pageCount}&page.pageSize=${page.pageSize}">尾页</a></c:if>
&nbsp;&nbsp;&nbsp;
 
 每页显示
 <select onchange="location.href='${pageContext.request.contextPath}${page.pageURL}?${page.fuSeaPara}&page.pageSize='+this.value">
                                                 <!-- 总数如果小于15 显示 总数页,如果大于15 显示15 -->
    <c:forEach var="selectvalue" begin="1" end="${page.totalCount<15?page.totalCount:15}" step="1">
        <option value="${selectvalue}" ${page.pageSize eq selectvalue ?"selected='selected'":""}>
            ${selectvalue}   
        </option>
    </c:forEach>
</select>
条
分页类专用PagingMS.java
package com.auth.util;
 
import java.util.ArrayList;
import java.util.List;
 
/*
 * author duidaima.com
 * 2023.03.09
 * 
 * */
 
//MySql 下通用 分页类
public class PagingMS {
    
       int pageSize;    //每页条目数  limit 第二个参数,查询多少条
       
       int totalCount;  //总条目数
        
       int pageCount;   //总页数
        
       int pageNow;     //当前页码
        
       int startNum;    //limit  第一个参数从第几条开始查
        
       String fuSeaPara;   // 模糊查询参数存储  ,下一页 的参数
        
       String pageURL;  //为满足  分页页面复用性  跳不同的action
        
       private List<?> resultList;      //返回数据库分页查询 结果集
        
     
       public String getFuSeaPara() {
        return fuSeaPara;
      }
 
       public void setFuSeaPara(String fuSeaPara) {
        this.fuSeaPara = fuSeaPara;
      }
   
       public String getPageURL() {
        return pageURL;
      }
 
      public void setPageURL(String pageURL) {
        this.pageURL = pageURL;
      }
 
       public int getPageSize() {
           //防止查出总条目为0,<5 ,系统会把 totalCount为0  赋值给 pageSize,而在求总页数 pageCount 是 pageSize会作为分母 ,系统报错。 
            if(pageSize==0){
                pageSize=1;
            }
            return pageSize;
        }
 
        public void setPageSize(int pageSize) {
            this.pageSize = pageSize;
        }
         
        //通过参数计算每页的条目数
        public int calcPageSize(String ps){
            if(null==ps){
                //总条数大于5 ,默认5,小于5,就是 总条数,不写的话,在总条数小于5 ,页面会显示每页显示1条 
                //return 5;
                return this.getTotalCount()>5?5:this.getTotalCount();
            }
            else return Integer.parseInt(ps);
        }
 
        public int getTotalCount() {
            return totalCount;
        }
 
        public void setTotalCount(int totalCount) {
            this.totalCount = totalCount;
        }
 
        public int getPageCount() {
            return totalCount%getPageSize()==0?totalCount/getPageSize():totalCount/getPageSize()+1;
        }
 
        public void setPageCount(int pageCount) {
           this.pageCount = pageCount;
        }
 
        public int getPageNow() {
            return pageNow;
        }
 
        public void setPageNow(int pageNow) {
            this.pageNow = pageNow;
        }
         
        //计算当前页
        public int calcPageNow(String pn){
            if(null==pn){
                return 1;
            }
            else return Integer.parseInt(pn);
        }
 
        public int getStartNum() {
            return (getPageNow()-1)*getPageSize();
        }
 
        public void setStartNum(int startNum) {
            this.startNum = startNum;
        }
         
        public List<?> getResultList() {
            return resultList;
        }
 
        public void setResultList(List<?> resultList) {
            this.resultList = resultList;
        }
 
        @Override
        public String toString() {
            return "PagingMS [pageSize=" + pageSize + ", totalCount=" + totalCount
                    + ", pageCount=" + pageCount + ", pageNow=" + pageNow
                    + ", startNum=" + startNum + ", resultList=" + resultList + "]";
        }
        
 
       
}  
Controller
package com.auth.controller;
 
import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
 
import net.sf.json.JSONObject;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
 
import com.alibaba.druid.util.StringUtils;
import com.auth.entity.CheckBatch;
import com.auth.entity.Store;
import com.auth.entity.StoreCheck;
import com.auth.entity.UserInfo;
import com.auth.service.CheckProductService;
import com.auth.service.StoreService;
 
import com.auth.util.PagingMS;/*
 * author 堆代码 duidaima.com
 * data  2023.03.15
 * 
 *
 * */
 
 //全查所有盘点表并 分页显示
    @RequestMapping("/showAllStoreCheListByPaging")
    public ModelAndView showAllStoreCheListByPaging(HttpServletRequest request,HttpServletResponse response){
        System.out.println("进入分页显示全部盘点表");
        //下拉列表显示所有  盘点批次 ,利用模糊查询,hsm2为空,进行全查。
        HashMap hsm2=new HashMap();
        List <CheckBatch> CheckBatchList=cps.likeFindCheckBatchByPagingSer(hsm2);
        request.setAttribute("CheckBatchListEL", CheckBatchList);
         
        PagingMS pgm=new PagingMS();
         
        int scCount=cps.findAllStoreCheckCountSer();
        pgm.setTotalCount(scCount);
         
        //每页条目数  ,limit 第2个参数
         
        String ps=request.getParameter("page.pageSize");
         
        //给对象赋 每页显示条数
        pgm.setPageSize(pgm.calcPageSize(ps));
         
        //当前页数目
         
        String pn=request.getParameter("page.pageNow");
         
        //赋当前页值
        pgm.setPageNow(pgm.calcPageNow(pn));    
         
        //为满足  分页页面复用性,设置
         
        String pageURL="/checkbatch/showAllStoreCheListByPaging.action";
        pgm.setPageURL(pageURL);
 
        HashMap hsm=new HashMap();
        hsm.put("startNumHKey", pgm.getStartNum());
        hsm.put("pageSizeHKey", pgm.getPageSize());
       
        pgm.setResultList(cps.findAllStoreCheckByPagingSer(hsm));
        System.out.println("pgm     "+pgm);
        ModelAndView mav = new ModelAndView();
        mav.addObject("page", pgm);
        //xml有配置 所以    可以   pages  也不能加  .jsp
        mav.setViewName("storeCheck-list");
        return mav;
    }

总结:

以上就是基于jsp技术的分页功能代码实现,希望对大家有所帮助。

用户评论