`
kong0itey
  • 浏览: 305971 次
社区版块
存档分类
最新评论

使用pager-taglib.jar实现的分页技术

    博客分类:
  • java
 
阅读更多

//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}" mce_href="${pageUrl}">首页</a>  
    </pg:first>  
    <pg:prev>  
        <a href="${pageUrl }" mce_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 }" mce_href="${pageUrl }">${pageNumber }</a>  
            </c:otherwise>  
        </c:choose>  
    </pg:pages>  
    <pg:next>  
        <a href="${pageUrl }" mce_href="${pageUrl }">后页</a>  
    </pg:next>  
    <pg:last>  
        <a href="${pageUrl }" mce_href="${pageUrl }">尾页</a>  
    </pg:last>  
</pg:pager> 

分享到:
评论

相关推荐

    pager-taglib.jar包下载

    `pager-taglib.jar`的出现简化了开发者的工作,它将分页逻辑封装在了标签库中,开发者只需要在JSP页面上使用特定的标签,就可以轻松实现分页。这个框架的主要优点在于其易用性和高效性,它减少了代码量,提高了开发...

    pager-taglib.jar

    "pager-taglib.jar" 是一个Java Web开发中的库文件,主要用于实现分页功能。在Web应用中,当数据量较大时,通常会采用分页显示的方式,以提高用户体验和加载速度。Pager Taglib是一个标签库,它提供了一组自定义JSP...

    pager-taglib-2.0.jar 已解决乱码

    已解决中文乱码问题的 pager-taglib-2.0.jar包。

    pager-taglib jar 和 tld 以及使用说明

    `pager-taglib.jar`是一个包含分页标签库实现的Java Archive (JAR) 文件。这个JAR文件包含了自定义标签的类和其他必要的支持代码。当在JSP页面中使用`pager-taglib`的标签时,这些类会被容器(如Tomcat)加载并执行...

    pager-taglib分页jar包

    **标题解析:**"pager-taglib分页jar包"指的是一个专门为JavaServer Pages (JSP) 开发的分页库,它包含了一个名为`pager-taglib`的Java Archive (JAR) 文件。这个JAR包提供了自定义的JSP标签,帮助开发者在网页上...

    pager-taglib.zip

    为了使用这个分页库,开发者需要在Web应用的部署描述符(web.xml)中配置Taglib,指定 "pager-taglib.jar" 的位置。然后,在JSP页面中通过`&lt;%@ taglib prefix="pager" uri="路径/to/pager.tld" %&gt;` 引入这个库,并...

    使用pager-taglib分页完整例子

    为了使用`pager-taglib`,你需要将对应的jar包(通常名为`pager-taglib-x.x.x.jar`)添加到项目的类路径中。这可以通过在`WEB-INF/lib`目录下放入jar包或者在构建工具如Maven或Gradle的依赖管理中进行设置来实现。 ...

    pager-taglib_jar

    总的来说,`pager-taglib_jar`提供的分页标签库极大地简化了JSP页面的分页实现,使得开发者能够专注于业务逻辑,而不用过多关注分页的细节。通过熟练掌握`pager-taglib`的使用,可以提高开发效率,同时保持代码的...

    pager-taglib 分页框架+附带例子

    `pager-taglib` 是一个用于网页分页功能的Java标签库,它简化了在JSP页面中实现分页展示数据的过程。这个框架旨在提高开发效率,提供易用的API和直观的标签语法,使得开发者无需编写大量的HTML和Java代码就能实现...

    pager-taglib-2.0完整部署运行

    当你将这个JAR文件放入Tomcat服务器的`WEB-INF/lib`目录下时,服务器将能够识别并加载这个库,使得在JSP页面中可以使用Pager Taglib提供的标签来实现分页。 2. **pager-src.jar**:这个文件包含了Pager Taglib的源...

    pager-taglib-2.0 JSP分页组件

    **描述分析:**"pager-taglib-2.0 JSP分页组件 包括jar包和安装使用说明" 暗示我们收到了这个组件的完整包,其中包含了运行所需的jar文件以及关于如何在项目中安装和使用的详细指南。这通常意味着我们可以直接将此...

    修正了中文参数传递乱码问题的pager-taglib.jar

    修正了中文参数传递乱码问题的pager控件。用于jsp分页显示pager-taglib.jar。直接放到lib文件夹即可使用。

    分页插件(pager-lib.jar)及使用方法和实例

    在本例中,我们将关注`pager-lib.jar`这个分页插件以及如何在项目中使用`pager-taglib`来实现这一功能。 `pager-lib.jar`是一个包含了分页处理逻辑和标签库的库文件,它通常包含以下组件: 1. 分页服务类:这部分...

    支持中文参数的pager-taglib.jar

    支持中文参数的java分页pager-taglib.jar

    Pager-taglib页面分页示例

    **Pager-taglib页面分页示例** 在Java Web开发中,数据量大的时候,分页显示是非常必要的。...这个示例项目展示了如何集成和使用Pager-taglib,对于学习和理解Java Web分页技术具有很好的参考价值。

    pager-taglib-2.0

    "pager-taglib-2.0" 提供了一种便捷的方式来实现自定义风格的分页,减少了开发者在编写分页功能时的复杂度。 1. **什么是Taglib?** Taglib(标签库)是JavaServer Pages (JSP) 技术中的一部分,它允许开发者创建...

    pager-taglib 分页标签使用

    `pager-taglib`是Java Web开发中常用的分页标签库,它简化了在JSP页面上实现分页功能的过程。这个标签库通常与Spring MVC、Struts2等框架结合使用,提供了一种声明式的方式来展示数据分页。下面将详细解释`pager-...

Global site tag (gtag.js) - Google Analytics