美文网首页
Java web 分页 代码 模板

Java web 分页 代码 模板

作者: 天堂宝宝_V | 来源:发表于2017-06-02 15:33 被阅读161次

第一种类型的分页

enter description hereenter description here

条件如下

  • 最多显示5页(可动态调整)
  • 后台返回总页数 pages
  • 后台返回当前页 currentPage
  • 当前页不能点击再次请求
  • 第一页时上一页功能禁用
  • 最后一页时下一页功能禁用

jsp 界面代码

1 根据pagescurrentPage 计算界面要显示的从开始到结束的页码放入数组中
<%
        int currentPage = (Integer)request.getAttribute("currentPage");
        int pages = (Integer)request.getAttribute("pages");
        int showPages = 5;
        int midValue = showPages/2;
        int begin = 1;
        int end = showPages;
        //展示page的个数,默认五个
        int showedPageCount = showPages;
        if (pages > showPages){
            //前面不够,从1开始,后面肯定够
            if(currentPage - midValue <=0){
                end = showPages;
            } else if(pages - currentPage < midValue){//后面不够,前面肯定够
                begin = pages - showPages + 1;
            } else{//两个都够
                begin = currentPage -midValue;
                end = currentPage +midValue;
            }
        } else {
            end = pages;
            showedPageCount = pages;
        }
        
        ArrayList<Integer> pageNumList = new ArrayList<Integer>();
        for(int i = 0;i < showedPageCount;i++){
            pageNumList.add(begin+i);
        }
        
    %>
2 使用Bootstrap 分页插件布局分页效果
<nav aria-label="Page navigation">
      <ul class="pagination">
        <li
            <c:if test="${currentPage == 1}">class="disabled"</c:if>
        >
          <a 
          <c:if test="${currentPage != 1}">href="/cd/fileIndex/keywordSearch?pageNumStr=${currentPage - 1}&keyword=${keyword}"</c:if>
          <c:if test="${currentPage == 1}">href="#"</c:if>
           aria-label="Previous">
            <span aria-hidden="true">上一页</span>
          </a>
        </li>
        
        <c:forEach items="<%=pageNumList %>" var="page" >
            <c:choose>
               <c:when test="${currentPage==page}">
                  <li class="active">
                      <span>${page}<span class="sr-only">(current)</span></span>
                  </li>
               </c:when>
               <c:otherwise>
                   <li ><a href="#" onclick="searchFileIndex(${page})">${page}</a></li>
               </c:otherwise>
            </c:choose>
        </c:forEach >
        <li
            <c:if test="${currentPage == pages}">class="disabled"</c:if>
        >
          <a 
           <c:if test="${currentPage != pages}">href="/cd/fileIndex/keywordSearch?pageNumStr=${currentPage + 1}&keyword=${keyword}"</c:if>
           <c:if test="${currentPage == pages}">href="#"</c:if>
           aria-label="Next">
            <span aria-hidden="true">下一页</span>
          </a>
        </li>
      </ul>
    </nav>

注意事项

  • 需要导入JSTL 头引用<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  • 由于c:forEach 语法限制循环只能从1开始,因此不得已使用了数组pageNumList

相关链接

Bootstrap 分页插件

第二种类型的分页

enter description hereenter description here enter description hereenter description here enter description hereenter description here enter description hereenter description here

条件如下

  • 后台返回总页数 totalPage
  • 后台返回当前页 targetPage
  • 第一页和最后一页必须显示(没有除外)
  • 当前页的前三页和后三页也需要显示
  • 当前页前/后多于三页(除去首末页)的使用...代替
  • 当前页不能点击
  • 第一页时上一页a标签禁用
  • 最后一页时下一页a标签禁用
1 根据totalPagetargetPage 计算界面要显示的从开始到结束的页码以及所有数据放入数组中
public List<String> getPageShowList(int targetPage, int totalPage) {
        int x = targetPage;
        int m = totalPage;
        List<String> pageShowList = new ArrayList<String>();
//      1_第1页 ,...2_第2页 
        if (x>5 && (m-x) >4) {
            pageShowList.add(1 + "_第1页");
            pageShowList.add("...");    
            for (int i = (x-3); i <= (x + 3) ; i++) {
                pageShowList.add( (i) + "_第" + (i) + "页");
            }
            pageShowList.add("...");
            pageShowList.add( (m) + "_第" + (m) + "页");
        }else if (x<=5 && (m-x) >4) {
            for (int i = 1; i <= x; i++) {
                pageShowList.add(i + "_第" + (i) + "页");
            }
            pageShowList.add( (x+1) + "_第" + (x+1) + "页");
            pageShowList.add( (x+2) + "_第" + (x+2) + "页");
            pageShowList.add( (x+3) + "_第" + (x+3) + "页");
            pageShowList.add("...");
            pageShowList.add( (m) + "_第" + (m) + "页");
        }else if (x>5 && (m-x) <=4) {
            pageShowList.add(1 + "_第1页");
            pageShowList.add("...");
            for (int i = (x-3); i <= m; i++) {
                pageShowList.add(i + "_第" + (i) + "页");
            }
        }else if (x <= 5 && (m-x) <= 4) {
            for (int i = 1; i <= m; i++) {
                pageShowList.add(i +  "_第" + (i) + "页");
            }
        }
        return pageShowList;
    }
2 jsp界面拿出数据进行展示,具体的跳转处理流程需要根据项目需要
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<script type="text/javascript">
        
        function jumpPage(currentPage,distance){
            var stockName = document.getElementById("stockName");
            var targetPage = 0;
            targetPage = currentPage + (distance);
            var url = '/Oracle-test/bid/bid/queryBidPageStock?targetPage=' 
                + targetPage +'&stockName='+stockName.value;
            window.location.href = url;
        }
        
        function buttonClick(){
            var stockName = document.getElementById("stockName");
            var jumpPageInput = document.getElementById("jumpPageInput");
            var url = '/Oracle-test/bid/bid/queryBidPageStock?targetPage=' 
                + jumpPageInput.value +'&stockName='+stockName.value;
            window.location.href = url;
        }
    </script>
<body>
    
    <table width="90%" border="0" cellspacing="2" cellpadding="3" align="center">
    
        <tr  bgcolor="f5f5f5">
            <td colspan="6">
                <div align="right">
                    当前第${targetPage}页,共 ${totalPage}页
                </div>
            </td>
        </tr> 
        <tr  bgcolor="f5f5f5">
            <td colspan="6">
                <div align="right">
                    <c:if test="${targetPage == 1}">上一页</c:if>
                    <c:if test="${targetPage != 1}">
                        <a href="javascript:jumpPage(${targetPage},-1)">
                        上一页</a> 
                    </c:if>
                    
                    <%
                    List<String> pageList = (List<String>)request.getAttribute("pageList");
                    if(pageList != null && pageList.size() > 0){
                        for (int i = 0 ; i < pageList.size(); i++){
                            String compstr = pageList.get(i);
                                if(compstr.contains("...")){
                                    %>
                                        <b>...</b>
                                    <%
                                } else {
                                    String[] comStrings = compstr.split("_");
                                    String pageNumStr = comStrings[0];
                                    Integer targetPage = (Integer)request.getAttribute("targetPage");
                                    if(pageNumStr.equals(""+targetPage)){
                                        %>
                                        <b><%=comStrings[1]%></b>
                                    <%
                                    } else {
                                        %>
                                            <a href = "javascript:jumpPage(<%=pageNumStr%>,0)"><%=comStrings[1]%></a>
                                        <%                              
                                    }
                                }
                            }
                            
                        }
                    
                    %>
                    
                    <c:if test="${targetPage == totalPage}">下一页</c:if>
                    <c:if test="${targetPage != totalPage}">
                        <a href="javascript:jumpPage(${targetPage},+1)">下一页</a>
                    </c:if>
                    
                    到第<input type = "text" id = "jumpPageInput" value = "${targetPage}" size = "1"> 页
                       <input type = "button" onclick="javascript:buttonClick()" value = "确定跳转">
                </div>
            </td>
        </tr> 
    </table>
</body>
</html>

相关文章

  • Java web 分页 代码 模板

    第一种类型的分页 条件如下 最多显示5页(可动态调整) 后台返回总页数 pages 后台返回当前页 curre...

  • 关于分页及模板

    模板 应用模板需要先引入template-web.js文件 通过ajax将用户信息放入模板 指定模板 分页 分页应...

  • Java笔记-SpringMVC中利用Velocity渲染HTM

    Velocity:基于Java的模板引擎,可以用Java代码渲染的简单而又强大的模板语言。开发Web时,可以将We...

  • SSM框架——实现分页和搜索分页

    分页是Java Web项目常用的功能,昨天在Spring MVC中实现了简单的分页操作和搜索分页,在此记录一下。使...

  • IDEA 创建 web 应用程序

    新建 java web 工程 新建工程,选择java web 应用模板 设置应用名与工程存储路径 在WEB-INF...

  • 87_熟练掌握ES Java API_基于search temp

    87_熟练掌握ES Java API_基于search template实现按品牌分页查询模板 搜索模板的功能,j...

  • 2018-11-19UI自动化&参数化

    一、java学习 idea 实时代码模板 idea实时代码模板 创建模板组,模板https://www.tapd....

  • 2018-11-19

    一、java学习 idea 实时代码模板 idea实时代码模板 创建模板组,模板https://www.tapd....

  • 2018-11-20

    一、java学习 idea 实时代码模板 idea实时代码模板 创建模板组,模板https://www.tapd....

  • EditPlus工具的使用及相关配置

    修改EditPlus模板函数 editplus默认的java模板函数的代码格式与我们平常使用的Java代码格式有一...

网友评论

      本文标题:Java web 分页 代码 模板

      本文链接:https://www.haomeiwen.com/subject/rmjufxtx.html