分页

package cn.itcast.tool.paging;

import java.util.List;

public class PageBean <T>{
    private int pc;//Page Code当前页数
    private int ps;//Page size每页记录数
    private int tp;//total page总页数
    private int tr;//total recode总记录数
    private String url;
    private List<T> beanList;//当前页的记录
    
    
    public int getPc() {
        return pc;
    }
    public void setPc(int pc) {
        this.pc = pc;
    }
    public int getPs() {
        return ps;
    }
    public void setPs(int ps) {
        this.ps = ps;
    }
    public int getTp() {
        tp=(tr%ps==0)?tr/ps:tr/ps+1;
        return tp;
    }
    public void setTp(int tp) {
        this.tp = tp;
    }
    public int getTr() {
        return tr;
    }
    public void setTr(int tr) {
        this.tr = tr;
    }
    public List<T> getBeanList() {
        return beanList;
    }
    public void setBeanList(List<T> beanList) {
        this.beanList = beanList;
    }
    public PageBean() {
        super();
    }
    public PageBean(int pc, int ps, int tp, int tr,String url, List<T> beanList) {
        super();
        this.pc = pc;
        this.ps = ps;
        this.tp = tp;
        this.tr = tr;
        this.url=url;
        this.beanList = beanList;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
    
    
}

 

 

package cn.itcast.tool.paging;

import javax.servlet.http.HttpServletRequest;

public class PageUtils {
    /**
     * 通过request得到不包括页码的路径
     * @param request
     * @return
     */
    public static String getUrl(HttpServletRequest request){
        String contextPath=request.getContextPath();//获取项目名
        String servletPath=request.getServletPath();//获取servletPath,即/CustomerServlet
        String queryString=request.getQueryString();//获取问号之后的参数部分
        
        if(queryString!=null){
            if(queryString.contains("&pc=")){//判断参数部分中是否包含pc这个参数,如果包含就截取
                int index=queryString.lastIndexOf("&pc=");
                queryString=queryString.substring(0,index);
            }
        }
        return contextPath+servletPath+"?"+queryString;
    }
}

 

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
第${pb.pc }页/共${pb.tp }页
 
 <a href="${pb.url }&pc=1">首页</a>
 <c:if test="${pb.pc>1 }">
 <a href="${pb.url }&pc=${pb.pc-1 }">上一页</a>
 </c:if>
 
 <!-- 计算begin和end者两个东西 -->
 <c:choose>
     <%-- 如果总页数不足10页,那么把所有的页数都显示出来  --%>
     <c:when test="${pb.tp<=10 }">
         <c:set var="begin" value="1"/>
         <c:set var="end" value="${pb.tp}"/>
     </c:when>
     <%-- 当总页数>10时,通过公式计算begin和end --%>
     <c:otherwise>
         <c:set var="begin" value="${pb.pc-5 }"/>
         <c:set var="end" value="${pb.pc+4 }"/>
         <%-- 尾溢出 --%>
         <c:if test="${end>pb.tp }">
             <c:set var="begin" value="${pb.tp-9 }"/>
             <c:set var="end" value="${pb.tp }"/>
         </c:if>
         <br/>
         <%-- 注意尾溢出要在头溢出之前 --%>
         <%-- 头溢出 --%>
         <c:if test="${begin<1 }">
             <c:set var="begin" value="1" />
             <c:set var="end" value="10" />
         </c:if>
     </c:otherwise>
 </c:choose>
 <%-- 循环遍历页码列表 --%>
 <c:forEach var="i" begin="${begin }" end="${end }">
     <c:choose>
         <c:when test="${i eq pb.pc }">
             [${i }]
         </c:when>
         <c:otherwise>
             <a href="${pb.url }&pc=${i}">[${i }]</a>
         </c:otherwise>
     </c:choose>
     
 </c:forEach>
 
 <c:if test="${pb.pc<pb.tp }">
 <a href="${pb.url }&pc=${pb.pc+1 }">下一页</a>
 </c:if>
 <a href="${pb.url }&pc=${pb.tp }">尾页</a>

 

posted @ 2016-10-19 14:25  guodaxia  阅读(100)  评论(0编辑  收藏  举报