趁有时间继续写.做项目中必然会遇到分页这个问题..在每次经验积累中!可能你所写的分页操作类功能会在不断的进化中.这次项目中我就选择了一个分页框架.在使用中可以参考别人的所做的效果和提高下开发的效率.现在就说下这个框架:
首先上其页面中下载
http://jsptags.com/tags/navigation/pager/download.jsp
这里也有提供一些效果和例子.
这里讲下一般常用的效果:
首先分页我们需要的是所查询数据的总的数据数量total.和每个数据集合.数据集合用于数据显示.total用于分页跳转到算法.这里我们可以看下pager-taglib的标签需要的参数:
<pg:pager url="访问页面的url地址" items="${pm.total }(总数据数量)" export="currentPageNumber=pageNumber">
<!--访问路径中后置数据.效果如xx.do?method=search-->
<pg:param name="method" value="search"/>
<pg:first>
<a href="${pageUrl}">首页</a>
</pg:first>
<pg:prev>
<a href="${pageUrl }">前页</a>
</pg:prev>
<pg:pages>
<c:choose><!--jstl标签.这里就不解析-->
<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>
${pageUrl}这是pager-taglib定义的el表达式...表示为url="访问页面的url地址"加上<pg:param name="method" value="search"/>形成的访问地址.
pg:pager【这个标签用来设置分页的总体参数】重要参数说明:
url:分页的链接根地址,pager标签会在这个链接的基础上附加分页参数
items:总记录数,pager标签正是根据这个值来计算分页参数的
maxPageItems:每页显示的行数,默认为10
maxIndexPages:在循环输出页码的时候,最大输出多少个页码,默认是10
pg:first【第一页的标签】重要参数说明:
export变量的意义:
pageUrl - 分页链接URL地址(最重要的export参数)
pageNumber - 页码
firstItem - 首页第一行的索引值
lastItem - 首页最后一行的索引值
pg:pre【上一页标签】重要参数说明:
export变量的意义:
pageUrl - 分页链接URL地址(最重要的export参数)
pageNumber - 页码
firstItem - 前页第一行的索引值
lastItem - 前页最后一行的索引值
pg:next【下一页标签】重要参数说明:
export变量的意义:
pageUrl - 分页链接URL地址(最重要的export参数)
pageNumber - 页码
firstItem - 下页第一行的索引值
lastItem - 下页最后一行的索引值
pg:last重要参数说明:
export变量的意义:
pageUrl - 分页链接URL地址(最重要的export参数)
pageNumber - 页码
firstItem - 尾页第一行的索引值
lastItem - 尾页最后一行的索引值
pg:pages【这个标签用来循环输出页码信息】重要参数说明:
export变量的意义:
pageUrl - 分页链接URL地址(最重要的export参数)
pageNumber - 页码
firstItem - pageNumber这个页码指定的那一页的第一行的索引值
lastItem - pageNumber这个页码指定的那一页的最后一行的索引值
这时候可能还有疑问.那页面中怎么知道他访问是第几页和每页显示多少数据量.
这里我们可以使用一个过滤类进行过滤:PagerFilter.java
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();
}
}
protected int getOffset(HttpServletRequest request){
int offset = 0;
try {
offset = Integer.parseInt(request.getParameter("pager.offset"));//这里是pager-taglib的一个属性获取当前页
} catch (NumberFormatException ignore) {
}
return offset;
}
protected int getPagesize(HttpServletRequest request){
return 10;//设置每页显示10条数据.这里可以进行更灵活的控制
}
public void init(FilterConfig arg0) throws ServletException {
}
从上面可以看到使用了SystemContext这里类.这个是自己写的一个利用threadLocal模式的.为防止一些数据的重复
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();
}
}
最后在web.xml中配置上过滤器
<filter>
<filter-name>pagerFilter</filter-name>
<filter-class>xxx(当前路径).PageFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>pagerFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
而在使用当中查询时候遇到中文查询时候将会出现乱码的问题.这里需要进行对源码进行一些修改:
第一:在下载源码后找到PagerTag.java这里类中addParam方法将
value = java.net.URLEncoder.encode(value,"UTF-8");--添加一个"UTF-8"的转换形式.
.第二:在传输数据当中.需要将你传输的数据进行URLEncoder.encode(data)加密.如下:
<pg:param name="method" value="<%URLEncoder.encode(request.getAtrribute("xxx"))%>"/>
然后在获取数据的时候再进行解码.这样子就防止传输中文的时候出现中文乱码的问题.
xxx = URLDecoder.decode(request.getAtrribute("xxx"));//解码.再操作
这只是使用到的一些功能.还有许多操作是没有使用到的也需要学习.
总的来说这个分页比较方便使用.而还存在点问题.扩展性好像也不咋样.正在看其源码希望可以写个好用的
下一篇大概会讨论下jstl自定义jstl标签和函数
分享到:
相关推荐
下面我们将详细探讨如何使用pager-taglib分页以及其主要特性。 首先,`pager-taglib`的核心在于其提供的自定义JSP标签,这些标签简化了分页界面的创建。例如,`<pager:pagelist>`用于显示分页链接,`<pager:page>`...
`pager-taglib`是一个开源的JSP标签库,提供了一系列易于使用的分页标签,如`<pager:page>`、`<pager:previous>`、`<pager:next>`等,开发者只需在JSP页面中引入这些标签,就可以快速构建出具有分页功能的列表页面。...
本项目提供了一个简单的使用Pager-taglib的示例,包括了两种不同的分页样式:普通样式和谷歌样式。 **1. Pager-taglib介绍** Pager-taglib是由Java开发的开源项目,它提供了自定义的JSP标签来处理分页逻辑。开发者...
**标题解析:**"pager-taglib分页jar包"指的是一个专门为JavaServer Pages (JSP) 开发的分页库,它包含了一个名为`pager-taglib`的Java Archive (JAR) 文件。这个JAR包提供了自定义的JSP标签,帮助开发者在网页上...
以下是一个简单的使用`pager-taglib`进行分页的JSP页面示例: ```jsp <pg:pager total="${totalRecords}" perPage="10" currentPage="${currentPage}" urlPattern="/list?page=${page}"></pg:pager> ``` 在上述...
`pager-taglib.jar`的出现简化了开发者的工作,它将分页逻辑封装在了标签库中,开发者只需要在JSP页面上使用特定的标签,就可以轻松实现分页。这个框架的主要优点在于其易用性和高效性,它减少了代码量,提高了开发...
pager-taglib 是个很好的jsp分页标签,使用它结合jstl可以实现灵活的分页导航功能。在实际的开发中post方式的提交比较常见,本人做了一个比较通用的基于post方式的一个应用。主要实现一下功能: 1.添加输入跳转、每...
当在JSP页面中使用`pager-taglib`的标签时,这些类会被容器(如Tomcat)加载并执行,以实现分页功能。 2. **理解`tld`文件** `tld`(Tag Library Descriptor)文件是用来描述一个JSP标签库的XML文件。在`pager-...
"Pager-Taglib 2.0" 是一个专为Java Web开发者设计的高效且易用的分页工具。它以JSP标签库的形式提供服务,极大地简化了在Web应用程序中实现分页功能的过程。这个库的核心是其标签,它们允许开发者在JSP页面上直接...
"pager-taglib-2.0" 是一个强大且灵活的分页标记库,它简化了Web开发中的分页实现,使得开发者能够快速地构建出类似大型网站的分页功能。其易于集成、高度定制化和良好的性能表现,使得它成为Java Web开发中的一个...
`pager-taglib`是Java Web开发中常用的分页标签库,它简化了在JSP页面上实现分页功能的过程。这个标签库通常与Spring MVC、Struts2等框架结合使用,提供了一种声明式的方式来展示数据分页。下面将详细解释`pager-...
**Pager Taglib 2.0详解与使用指南** Pager Taglib是Java Web开发中的一个强大工具,主要用于实现页面的分页功能。它提供了一组自定义的JSP标签,简化了在网页上创建分页链接的过程,使得开发者可以更加专注于业务...
**Pager-taglib分页方法详解** Pager-taglib是Java Web开发中一种常用的分页标签库,它极大地简化了在JSP页面中实现分页功能的过程。这个标签库通常与Servlet和JSP一起使用,尤其在大数据量展示时,提供用户友好的...
**描述分析:**"pager-taglib-2.0 JSP分页组件 包括jar包和安装使用说明" 暗示我们收到了这个组件的完整包,其中包含了运行所需的jar文件以及关于如何在项目中安装和使用的详细指南。这通常意味着我们可以直接将此...
这是pager-taglib的官方源码,但在采用官方的pager-taglib分页传输中文参数会出现乱码,所以我采用maven新建一个pager-taglib项目对pager-taglib的源码进行小小的改动,是他支持中文传输,更重要的是把源代码提供给...
1. **简单分页**:Pager-taglib提供了一个简单的标签来实现页面导航,通常与Servlet或JSP中的数据查询逻辑配合使用。 2. **自定义样式**:同样支持通过CSS自定义分页导航条的样式。 3. **配置灵活**:可以通过配置...
在这个“pager-taglib分页例子”中,我们将探讨如何使用`pager-taglib`进行高效且简洁的分页实现。 首先,`pager-taglib`提供了几个预定义的标签,如`<pg:pager>`、`<pg:firstPage>`、`<pg:lastPage>`、`...
### 使用pager-taglib实现分页显示的详细步骤 在现代Web开发中,为了提升用户体验以及减轻服务器负担,分页功能成为了一个不可或缺的部分。本文将详细介绍如何利用`pager-taglib`结合SSH(Struts、Spring、...