当前位置:编程学习 > JS >>

jsp自定义分页标签page

日常工作项目里,分页是十分常见的,网上也有大把的分页插件,性能和美观程度都比较不错,但是有时候并不一定能满足我们的需求,因为大部分的分页插件都是在客户端分页,有的甚至需要你一次性查询出所有的数据放入内存,在内存进行分页,而且分也时,只是单纯分页只接受页码,并不能传入本页的某些参数到另一个页面做重新查询的条件,进而重新分页。www.zzzyk.com
            
             根据jsp自定义分页标签的特性,我们可以定制自己的分页标签,更加方便开发中的使用,关于jsp的自定义标签,上篇已有详细的介绍说明, 
 
             
 
              该页最下面的 分页栏,即是自定义的jsp的标签,我这里给的名字是<page:page pager="${requestScope.pb}" />,即只要引入它即可出现该分页栏,由于为了方便,样式可能不太好看,这个大家可以自己去调节。
 
                   下面我们开始实现这个page标签,首先新建一个web项目,并引入struts必要地几个jar包。新建一个包,取名为com.page.util,将page的三个实现类放在下面,分别是Pager.java,PagerHelp.java,PageTag.java,它们的实现分别如下:
 
Pager.java:
Java代码 
/** 
 * 保存分页信息的类 
 *  
 *  
 */  
public class Pager {  
    private int totalRows; // 总行数  
  
    private int pageSize = 10; // 每页显示的行数  
  
    private int currentPage; // 当前页号  
  
    private int totalPages; // 总页数  
  
    private int startRow; // 当前页在数据库中的起始行  
  
    private String linkUrl; // 要跳转的URL  
  
    public Pager() {  
    }  
  
    public Pager(int _totalRows) {  
        totalRows = _totalRows;  
        totalPages = totalRows / pageSize;  
        int mod = totalRows % pageSize;  
        if (mod > 0) {  
            totalPages++;  
        }  
        currentPage = 1;  
        startRow = 0;  
    }  
  
  
    /** 
     * 设定查询的起始行数 
     *  
     * @param currentPage 
     */  
  
    public void setStart(int currentPage) {  
        this.currentPage = currentPage;  
        startRow = (currentPage - 1) * pageSize;  
    }  
  
    public int getTotalRows() {  
        return totalRows;  
    }  
  
    public void setTotalRows(int totalRows) {  
        this.totalRows = totalRows;  
    }  
  
    public int getPageSize() {  
        return pageSize;  
    }  
  
    public void setPageSize(int pageSize) {  
        this.pageSize = pageSize;  
    }  
  
    public int getCurrentPage() {  
        return currentPage;  
    }  
  
    public void setCurrentPage(int currentPage) {  
        this.currentPage = currentPage;  
    }  
  
    public int getTotalPages() {  
        return totalPages;  
    }  
  
    public void setTotalPages(int totalPages) {  
        this.totalPages = totalPages;  
    }  
  
    public int getStartRow() {  
        return startRow;  
    }  
  
    public void setStartRow(int startRow) {  
        this.startRow = startRow;  
    }  
  
    public String getLinkUrl() {  
        return linkUrl;  
    }  
  
    public void setLinkUrl(String linkUrl) {  
        this.linkUrl = linkUrl;  
    }  
  
}  
 
PagerHelp.java:
Java代码 
import javax.servlet.http.HttpServletRequest;  
  
  
/** 
 * 控制分页的类 
 *  
 *  
 */  
public class PagerHelper {  
  
    public static Pager getPager(HttpServletRequest req,  
            int totalRows) {  
  
        // 定义pager对象,用于传到页面  
        Pager pager = new Pager(totalRows);  
  
        // 从Request对象中获取当前页号  
        String currentPage = req.getParameter("cpage");  
  
        // 如果当前页号为空,表示为首次查询该页  
        // 如果不为空,则刷新pager对象,输入当前页号等信息  
        if (currentPage != null) {  
            pager.setStart(Integer.parseInt(currentPage));  
        } else {  
            pager.setStart(1);  
        }  
        return pager;  
    }  
}  
 
 
PageTag.java:
Java代码 
import java.io.IOException;  
  
import javax.servlet.jsp.JspWriter;  
import javax.servlet.jsp.tagext.TagSupport;  
  
  
/** 
 * 标签类 用于分页查询 
 * 
 */  
public class PageTag extends TagSupport {  
    /**   
&nbs
补充:Web开发 , Jsp ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,