zoukankan      html  css  js  c++  java
  • 基础分页查询解题思路

      第一步:我们首先确定每页要放多少数据,一共多少数据,要分多少页,对上一页和下一页、首页、尾页进行页数分析,由此依据创建工具类page,page接受网页返回的当前页数(若无页数数据则默认为一),返回正确的上一页下一页...的page数,servlet通过调用page工具类实现正确的页数查询。最后返回数据到jsp页面显示。

      那么,工具类:

    package com.person.util;
    
    public class PageUtil {
        private Integer currentPage;//当前页
        private Integer firstPage;//第一页
        private Integer lastPage;//尾页
        private Integer nextPage;//下一页
        private Integer proPage;//上一页
    
        private Integer totalPage;//总页数
        private Integer totalCount;//总数据量
    
        private Integer index;//分页查询的索引
    
        private PageUtil(){}
    
        public PageUtil(String currentPage,Integer totalCount){
            this.currentPage=currentPage==null? 1: Integer.parseInt(currentPage);
            this.totalPage=(totalCount+4)/5;
    
            this.firstPage = 1;
            this.lastPage = this.totalPage;
    
            this.nextPage = this.currentPage==this.lastPage ? this.lastPage : this.currentPage+1;
            this.proPage= this.currentPage==1?1:this.currentPage-1;
            this.totalCount=totalCount;
            this.index=(this.currentPage-1)*5;
        }
    
        public Integer getCurrentPage() {
            return currentPage;
        }
    
        public void setCurrentPage(Integer currentPage) {
            this.currentPage = currentPage;
        }
    
        public Integer getFirstPage() {
            return firstPage;
        }
    
        public void setFirstPage(Integer firstPage) {
            this.firstPage = firstPage;
        }
    
        public Integer getLastPage() {
            return lastPage;
        }
    
        public void setLastPage(Integer lastPage) {
            this.lastPage = lastPage;
        }
    
        public Integer getNextPage() {
            return nextPage;
        }
    
        public void setNextPage(Integer nextPage) {
            this.nextPage = nextPage;
        }
    
        public Integer getProPage() {
            return proPage;
        }
    
        public void setProPage(Integer proPage) {
            this.proPage = proPage;
        }
    
        public Integer getTotalPage() {
            return totalPage;
        }
    
        public void setTotalPage(Integer totalPage) {
            this.totalPage = totalPage;
        }
    
        public Integer getTotalCount() {
            return totalCount;
        }
    
        public void setTotalCount(Integer totalCount) {
            this.totalCount = totalCount;
        }
    
        public Integer getIndex() {
            return index;
        }
    
        public void setIndex(Integer index) {
            this.index = index;
        }
    
        @Override
        public String toString() {
            return "PageUtil{" +
                    "currentPage=" + currentPage +
                    ", firstPage=" + firstPage +
                    ", lastPage=" + lastPage +
                    ", nextPage=" + nextPage +
                    ", proPage=" + proPage +
                    ", totalPage=" + totalPage +
                    ", totalCount=" + totalCount +
                    ", index=" + index +
                    '}';
        }
    }

    接下来进行DAO的编写:

    接口:

     /**
         * 根据具体的page(页数)进行固定个数的信息查询
         * @param index
         * @return
         */
        List<Map<String,Object>> getAdminByIndex(Integer index);

    impl:

     @Override
        public List<Map<String, Object>> getAdminByIndex(Integer index) {
            String sql="select * from administrators limit ?,5";
            return DBUtil.executeQuery(sql,index);
        }

    准备工作完成后进行servlet的编写:

    package com.person.servlet;
    
    import com.person.dao.IAdminDAO;
    import com.person.dao.impl.AdminDAOImpl;
    import com.person.util.PageUtil;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.util.List;
    import java.util.Map;
    
    @WebServlet("/dromAdminHome.isLogin")
    public class DromAdminHomeServlet  extends HttpServlet {
        @Override
        protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            //将此page页面的信息传递过来
            String page=req.getParameter("page");
            //设置页面信息进工具类,
            PageUtil pageUtil = new PageUtil(page,7);
            
            //查询本页面的信息:
            IAdminDAO adminDAO = new AdminDAOImpl();
            List<Map<String,Object>> allAdmin=adminDAO.getAdminByIndex(pageUtil.getIndex());
            
            //将查询出来的信息设置入req中同时将工具类中计算出来的其他可供点击页面的信息也存入req中
            //这样若点击到时则执行本servlet,则又会计算出点击页面其外的其他页面的page,本页面的信息则进行查询显示
            req.setAttribute("allAdmin",allAdmin);
            req.setAttribute("pageData",pageUtil);
    
            req.getRequestDispatcher("/views/dromAdminHome.jsp").forward(req,resp);
    
        }
    }

    最后进行jsp页面的编写:

    <table cellspacing="0px">
            <tr>
                <td>编号</td>
                <td>姓名</td>
                <td>性别</td>
                <td>电话</td>
                <td>宿舍楼</td>
                <td>用户名</td>
                <td>操作</td>
            </tr>
            <c:forEach var="a" items="${allAdmin}">
                <tr>
                    <td>${a.id}</td>
                    <td>${a.name}</td>
                    <td>${a.gender}</td>
                    <td>${a.telephone}</td>
                    <td>${a.dormitory}</td>
                    <td>${a.username}</td>
                    <td><a href="/yuer/views/updateAdmin.jsp">修改</a> <a href="/yuer/deleteAdmin?id=${a.id}">删除</a></td>
                </tr>
            </c:forEach>
    
        </table>
        <div style="text-align: center">
            <a  href="/yuer/dromAdminHome.isLogin?page=${pageData.firstPage}" >首页</a>
            <a  href="/yuer/dromAdminHome.isLogin?page=${pageData.proPage}" >上一页</a>
            <a  href="/yuer/dromAdminHome.isLogin?page=${pageData.nextPage}" >下一页</a>
            <a  href="/yuer/dromAdminHome.isLogin?page=${pageData.lastPage}" >尾页</a>
            共【${pageData.currentPage}/${pageData.totalPage}】页            每页显示【5】条
        </div>

    over~~~~~~~~~~~

  • 相关阅读:
    别让你的生活止于平庸!(摘)
    NSURLSession 请求
    第三方原理
    iOS实用的小技巧
    简书APP
    网络请求
    JQuery 简介
    struts2拦截器的实现原理及源码剖析
    hibernate配置文件注意点
    hibernate中三种状态
  • 原文地址:https://www.cnblogs.com/fanqiexin/p/11105618.html
Copyright © 2011-2022 走看看