那位大侠能给我一个Java通用的分页控件,我将非常感激。
其中最好能包含SQL Server2000,SQL Server2005,Oracle、MySql等很常用的一些数据库分页实现。
最好能加上一些实例,便于我使用。

解决方案 »

  1.   

    http://writeblog.csdn.net/PostList.aspx
    我只有分页的代码。你看看吧,可能有用。
      

  2.   

    网上找这个jar包
    pager-taglib.jar这个是实现分页的   实现效果就如google分页效果一样
      

  3.   

    这是我整理的 你看下吧1.导入pager-taglib.jar包;
    2.引入pager-taglib标签:<%@ taglib prefix="pg"  uri="http://jsptags.com/tags/navigation/pager" %>
    3.建立PagerModel类:
    public class PagerModel {
    /**
     * 总记录数
     */
    private int total;
    /**
     * 当前页结果集
     */
    private List datas;
    public List getDatas() {
    return datas;
    }
    public void setDatas(List datas) {
    this.datas = datas;
    }
    public int getTotal() {
    return total;
    }
    public void setTotal(int total) {
    this.total = total;
    }
    }
    4.pager业务逻辑部分:
    public class AbstractManager extends HibernateDaoSupport {
    public PagerModel searchHql(String hql){
    return searchHql(hql,null,SystemContext.getOffset(),SystemContext.getPageSize());
    }
    public PagerModel searchHql(String hql,Object datas){
    return searchHql(hql,new Object[]{datas},SystemContext.getOffset(),SystemContext.getPageSize());
    }
    public PagerModel searchHql(String hql,Object[] datas){
    return searchHql(hql,datas,SystemContext.getOffset(),SystemContext.getPageSize());
    }
    public PagerModel searchHql(String hql,int offset,int pageSize){
    return searchHql(hql,null,offset,pageSize);
    }
    public PagerModel searchHql(String hql,Object datas,int offset,int pageSize){
    return searchHql(hql,new Object[]{datas},offset,pageSize);
    }
    public PagerModel searchHql(String hql,Object[] datas,int offset,int pageSize){
    String countHql = getQuery(hql);
    Query query = getSession().createQuery(countHql);
    if(datas !=null && datas.length > 0){
    for(int i = 0 ; i<datas.length;i++)
    query.setParameter(i, datas[i]);
    }
    int total = ((Long)query.uniqueResult()).intValue();
    Query query1=getSession().createQuery(hql);
    if(datas !=null && datas.length > 0){
    for(int i = 0 ; i<datas.length;i++)
    query1.setParameter(i, datas[i]);
    }
    List list =query1.setFirstResult(offset) .setMaxResults(pageSize).list();
    PagerModel pm = new PagerModel();
    pm.setDatas(list);
    pm.setTotal(total);
    return pm;
    }
    public String getQuery(String hql){
    int index =hql.indexOf("from");
    if(index != -1){
    return "select count(*)"+hql.substring(index);
    }
    throw new SystemException("查询语句出错!");
    }
    }5.定义offset、pagesize类:
    public class SystemContext {
    private static ThreadLocal offset = new ThreadLocal();
    private static ThreadLocal pageSize = new ThreadLocal();
    public static int getOffset(){
    Integer os = (Integer)offset.get();
    if(os == null){
    return 0;
    }
    return os;
    }
    public static void setOffset(int offsetvalue){
    offset.set(offsetvalue);
    }
    public static void removeOffset(){
    offset.remove();
    }
    public static int getPageSize(){
    Integer ps = (Integer)pageSize.get();
    if(ps == null){
    return Integer.MAX_VALUE;
    }
    return ps;
    }
    public static void setPageSize(int pageSizevalue){
    pageSize.set(pageSizevalue);
    }
    public static void removePageSize(){
    pageSize.remove();
    }
    }
    6.过滤器中初始化pagesize、offset:
    public class PagerFilter implements Filter {
    public void destroy() {
    }
    public void doFilter(ServletRequest request, ServletResponse response,
    FilterChain chain) throws IOException, ServletException {
    HttpServletRequest httpRequest =(HttpServletRequest)request;
    SystemContext.setOffset(getOffset(httpRequest));
    SystemContext.setPageSize(getPageSize(httpRequest));
    try{
    chain.doFilter(request, response);
    }finally{
    //清空ThreadLocal中的值
    SystemContext.removeOffset();
    SystemContext.removePageSize();
    }
    }
    public void init(FilterConfig arg0) throws ServletException {
    }
    public int getOffset(HttpServletRequest request){
    int offset = 0;
    try {
    offset = Integer.parseInt(request.getParameter("pager.offset"));
    } catch (NumberFormatException ignore) {
    }
    return offset;
    }
    public int getPageSize(HttpServletRequest request){
    return 3;
    }
    }
    7.配置过滤器web.xml中:
    <filter>
    <filter-name>pager-taglib</filter-name>
    <filter-class>com.oa.util.filter.PagerFilter</filter-class>
    </filter><filter-mapping>
    <filter-name>pager-taglib</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
    8.显示效果:
    <pg:pager url="org.do" items="${pm.total }" export="currentPageNumber=pageNumber">
    <pg:param name="parentId"/>
    <pg:first>
    <a href="${pageUrl}">首页</a>
    </pg:first>
    <pg:prev>
    <a href="${pageUrl }">前页</a>
    </pg:prev>
    <pg:pages>
    <c:choose>
    <c:when test="${currentPageNumber eq pageNumber }">
    <font color="red">${pageNumber }</font>
    </c:when>
    <c:otherwise>
    <a href="${pageUrl }">${pageNumber }</a>
    </c:otherwise>
    </c:choose>
    </pg:pages>
    <pg:next>
    <a href="${pageUrl }">后页</a>
    </pg:next>
    <pg:last>
    <a href="${pageUrl }">尾页</a>
    </pg:last>
    </pg:pager>
      

  4.   

    两个字母搞定J2EE平台通用分页标签
    http://howsun.blog.sohu.com/90707791.html
      

  5.   

    用标签吧:
    <%@ tag language="java" import="java.util.*" 
    pageEncoding="UTF-8"%>
    <%@ taglib prefix="s" uri="/struts-tags" %>
    <%@ attribute name = "pagedata" type = "com.ssh2.helper.PageData" required = "true"%>
    <%@ attribute name = "paramname" type = "java.lang.String"%>
    <%@ attribute name = "url" type = "java.lang.String" required = "true"%>
    <%
    if(paramname == null || paramname.equals(""))
    paramname = "topage";
    if(url.lastIndexOf("?") > 0){
    url = url + "&" + paramname + "=";
    }else{
    url = url + "?" + paramname + "=";
    }
    request.setAttribute("empurl",url);
    %>
    <style>
    <!--
    a{text-decoration: none;color: gray;}
    a:hover{text-decoration: underline;color: red;}
    -->
    </style>
    <div><font style="font-size: 12">
         记录:${pagedata.dataFrom}-${pagedata.dataEnd}/${pagedata.total} &nbsp;&nbsp;
         页码:${pagedata.currentPage}/${pagedata.totalPage}&nbsp;&nbsp;
         <a href="${empurl}1">首页</a>
         <s:if test="#attr.pagedata.currentPage > 1">
         <a href="${empurl}${pagedata.currentPage - 1}">上一页</a>
         </s:if>
         <s:if test="#attr.pagedata.currentPage < #attr.pagedata.totalPage">
         <a href="${empurl}${pagedata.currentPage + 1}">下一页</a>
         </s:if>
        
         <a href="${empurl}${pagedata.totalPage}">尾页</a></font>
    </div>
      

  6.   

    http://www.family168.com/tutorial/jsp/html/jsp-ch-15.html#jsp-ch-15-01
    参考这个 很详细
      

  7.   

    我这里倒是有一个非常不错的分页标签,不过页面的分页做的确实是非常简单,详细调用见http://mm20dd.blog.163.com/blog/static/1325683202009101311425650/,不过现在就是如果有对于将显示的数据进行判断,现在还没有实现,具体的分页用的sun提供的rowset离线分页的。
      

  8.   

    忘了说,觉得不错的话,[email protected]联系
      

  9.   

    忘了说,这个分页在mysql,sqlserver,Oracle上都测试通过了,至于分页的效率有3万多条,分页速度你可以到http://download.csdn.net/source/1796801下载(免费)看看,
      

  10.   

    我有一个分页的控件,是基于dwr的做无缝刷新的。
      

  11.   

    SSH pager-taglib分页的实现, 不错哦http://www.javaeye.com/topic/295084
      

  12.   

    分页显示详解
    http://zhen144000.blog.163.com/blog/static/88690368200871745754206/各类分页显示
    http://blog.csdn.net/yumengjx/relatedarticles/522358.aspx
      

  13.   

    pager-taglib控件,去查查,很好用
      

  14.   

    请问一下pager-taglib控件必须要用到Hibernate吗?
    我可以不用Hibernate吗?
      

  15.   

    谁有也给我发一份,[email protected],谢谢
      

  16.   

    up...ou  ye xiang xue xue
      

  17.   

    我也要  
      [email protected]
    谢谢
      

  18.   

    可以试试pager-taglib
    当然,自己也要学着掌握基本分页原理
      

  19.   

    给你提供2个方案,也是我自己实现过的,没有问题的:
    1:自己写分页,把分页写成一个类,想实现多数据库,把得到分页语句写成一个方法,比如:getOraclePageSql(),getMySQLPageSql()等等
    2:用控件:比如extjs的分页,也是比较容易的
    如果想实现,需要自己修改里面的代码我个人用的是第一种
      

  20.   

    extjs的表格和分页控件是很好用的。建议部分使用extjs,如果整体使用的,太慢了。
      

  21.   

    不但能分页,还能随时选择每页显示多少条,并且每列都可以一键自动排序,源码:
    http://download.csdn.net/source/1823849
      

  22.   

    用displaytag吧,从网上搜一大片,使用很很简单,只需配置就行了,不过要是大数据量在性能上可能不是很理想。
      

  23.   

     能发我份吗?没用DWR做过,学习学习 谢谢,[email protected]
      

  24.   

    我在csdn发了一个分页,必须要和Struts一齐应用,你有兴趣可以搜索“Struts 分页”,应该可以找到,自己去下载吧